Linux入门攻坚——28、php、mysql基础

httpd+php:是在httpd中启用模块,不同的工作模式,使用的模块不同
  modules
    httpd:prefork --> libphp5.so
    httpd:event or worker --> libphp5-zts.so

php:引入zend engine后,分为两个阶段:opcode和excute
  scanning --> parsing --> compilation --> excution

PHP
php解释器:
  配置文件:/etc/php.ini,/etc/php.d/*.ini
  配置文件(php.ini)在PHP启动时被读取。对于服务器模块版本的PHP,仅在web服务器启动时读取一次,对于CGI和CLI版本,每次调用都会读取。

ini:
  [Section]
  directive = value

MariaDB(mysql)
关系型数据库的一种开源实现;RDBMS设计范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第四范式(4NF)、第五范式(5NF,又称完美范式)
RDBMS:
    MySQL:MySQL,MariaDB,Percona-server
    PostgreSQL:简称为pgsql --> EnterpriseDB
    Oracle:
    MSSQL:
事务:多个操作被当做一个整体对待
  ACID:Atomicity、Consistency、Isoaltion、Durability
    A:原子性;   C:一致性;   I:隔离性;   D:持久性

基本概念:
  约束:constraint,向数据表提供的数据要遵守的限制;
    主键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行,且NOT NULL;
    唯一键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行,允许NULL;
    外键:一个表中的某字段可填入数据取决于另一个表的主键已有的数据;
    检查性:
  索引:将表中的一个或多个字段中的数据复制一份另存,并且需要按特定次序排序存储;
  关系运算:
    选择:挑选出符合条件的部分行
    投影:挑选出需要的字段
    连接:
数据抽象:
  物理层:决定数据的存储格式,即RDBMS在磁盘上如何组织文件;
  逻辑层:描述DB存储什么数据,以及数据间存在什么样的关系;
  视图层:描述DB中的部分数据;

MariaDB:
  安装MySQL:
    源代码:编译安装
    二进制格式的程序包:展开至特定路径,并经过简单配置后即可使用;
    程序包管理器管理的程序包:
      rpm:OS Vendor、项目官方
      deb:

MariaDB的特性:
  插件式存储引擎:存储管理器有多种实现版本,功能和特性可能略有差别:用户可根据需要灵活选择;存储引擎也称之为“表类型”;
  更多的存储引擎:MyISAM --> Aria,InnoDB --> XtraDB

安装使用MariaDB: 二进制格式的程序包安装
  CentOS 7直接提供;
  CentOS 6:
1、下载:mariadb-5.5.68-linux-x86_64.tar.gz(在下载时,看到还有mariadb-5.5.68-linux-systemd-x86_64.tar.gz,应该是对systemd的支持,即可以使用systemd进行管理),是通用二进制包。
2、创建mysql用户,以此用户运行mysql进程。

3、展开压缩包:一定放置于/car/local下

4、解压后,创建mariadb-5.5.68-linux-x86_64目录,安装要求放在mysql目录,所以创建链接:

5、进入mysql目录:

修改目录中文件及子目录的属主属组:

其中,data目录用于存储数据库数据的,一般单独存放于一个挂载的设备上,因为数据是不断增加变化的,所以存放的设备一般要能够随时扩展,因为数据重要,所以最好有快照或备份功能,这里实验将其安装在LVM上的xfs系统上。

查看本机的磁盘,sdb上还有多余的空间:fdisk  /dev/sdb -l

创建新分区:

修改分区类型:

创建物理卷、卷组、逻辑卷:

对于CentOS6,需要额外安装xfs:

创建xfs文件系统:

配置开机挂载:编辑/etc/fstab

创建/mydata目录:
mkdir /mydata

重载fstab:

创建data目录,修改属主属组:

6、创建mysql数据库:

保存数据库数据的目录是用--datadir=path参数设定,--user=user_name是指定以哪个用户运行。

.

对于mysql来说,创建的数据库其实就是data下的一个目录,目录中保存创建对应数据库的数据,一个逻辑映射关系。这里可以看到,创建了mysql目录,也就是有一个mysql数据库。

7、添加服务启动脚本,mysql已经给了:

8、准备配置文件
配置格式:类ini格式,为各程序均通过单个配置文件提供配置信息;
    [prog_name]
配置文件查找次序:
    /etc/my.cnf --> /etc/mysql/my.cnf --> --default-extra-file=/PATH/TO/CONF_FILE --> ~/.my.cnf
现在按第二个组织配置文件:创建/etc/mysql/my.cnf
  安装后的MariaDB提供了几个配置文件,是按照不同的内存大小来配置的。

cp support-files/my-large.cnf /etc/mysql/my.cnf 

调整上述文件:

9、启动MariaDB:
第一次启动时:

分析其错误提示,是创建日志文件时出错,在/var/log/目录下创建mysqld.log失败,原因是/var/log目录的属主属组是root,而mysql启动是用的mysql用户,手动创建mysqld.log文件,然后chown mysql.mysql /var/log/mysqld.log,重新启动:

MariaDB的程序组成:
C:
  mysql:CLI交互式客户端程序;
  mysqldump,mysqladmin...
S:
  mysqld_safe
  mysqld
  mysqld_multi

服务器端监听的两种socket地址:
  ip socket:监听在tcp的3306端口,支持远程通信;
  unix sock:监听在sock文件上(/tmp/mysql.sock,/var/lib/mysql/mysql.sock),仅支持本地通信。
    server:localhost,127.0.0.1   (本地共享文件通信方式)

命令行交互式客户端程序:mysql
  mysql 
    -uUSERNAME:用户名,默认为root
    -hHOST:服务器主机,默认为localhost
    -pPASSWORD:密码,默认为空
    注意:mysql用户账号由两部分组成:‘USERNAME’@‘HOST’;其中HOST用于限制此用户可通过哪些主机远程连接mysql服务器。
    支持使用通配符:
      %:匹配任意长度的任意字符;
      _:匹配任意单个字符;
  命令:
    客户端命令:本地执行;
      mysql> help    获取所有客户端命令
        每个命令都有完整形式和简写格式,如status 简写 \s
    服务端命令:通过mysql协议发往服务器执行并取回结果;
        每个命令都必须有命令结束符,默认为分号;。

使用客户端工具登录数据库:

安全初始化:mysql_secure_installation,因为root默认密码全为空,不安全,使用这个脚本进行安全初始化。

关系型数据库的常用组件:
  数据库:database
  表:table
    行:row
    列:column
  索引:index
  视图:view
  用户:user
  权限:privilege
  存储过程:procedure
  存储函数:function
  触发器:trigger
  事件调度器:event scheduler

SQL语句:
  DDL:Data Defination Language
    CREATE,DROP,ALTER
  DML:Data Manipulation Language
    INSERT,DELETE,UPDATE,SELECT
    GRANT,REVOKE

数据库:
  CREATE DATABASE|SCHEMA  [IF NOT EXISTS] ‘DB_NAME’;
  DROP DATABASE|SCHEMA [IF EXISTS] ‘DB_NAME’;
  CHARACTER SET 'character set name'  使用的字符集
  COLLATE 'collate name'   使用的排序方法
  查看支持的所有字符集:show character set;
  查看支持的所有排序规则:show collations;
  查看所有的数据库:show databases;
获取命令使用帮助:
  mysql>HELP KEYWORD; 如HELP CREATE DATABASE

表:
  CREATE TABLE [IF NOT EXISTS]  tb_name (col1 datatype 修饰符,col2 datatype 修饰符,...) ENGINE=''
  查看所有的引擎:show engines;
  查看所有的表:show tables [ from db_name];
  查看表结构:desc [db_name.]tb_name;
  删除表:DROP TABLE [IF EXISTS] tb_name;

数据类型:
  字符型:
    定长字符型:CHAR(#),BINARY(#)
    变长字符型:VARCHAR(#),VARBINARY(#)
    对象存储:
      TEXT:不区分大小写
      BLOB:区分大小写
    内置类型:
      ENUM:枚举类型
      SET:集合
  数值型:
    精确数值型:
      整型 int:tinyint、smallint、mediumint、int、bigint
      十进制 decimal:decimal
    近似数值型:单精度浮点型float、双精度浮点型double
  日期时间型:
    日期:DATE
    时间:TIME
    日期时间型:DATETIME
    时间戳:TIMESTAMP
    年份:YEAR(2),YEAR(4)

修饰符:
  NOT NULL:非空约束
  DEFAULT VALUE:设定默认值
  UNSIGNED:无符号数
  AUTO_INCREMENT:自动增长
字段修饰符:
  PRIMARY KEY
  UNIQUE KEY

数据库基础应用:

获取创建表命令帮助:mysql> HELP CREATE TABLE;
查看创建命令:SHOW CREATE TABLE tbl_name;
查看表状态:SHOW TABLE STATUS LIKE ‘tbl_name’\G

删除表:
DROP TABLE [IF EXISTS] ‘tbl_name’;
修改表:
ALTER TABLE ‘tbl_name’
  字段:
    添加字段:add
    删除字段:drop
    修改字段:alter,change,modify
  索引:
    添加索引:add
    删除索引:drop
  表选项

索引:
  索引是特殊数据结构:定义在查找时作为查找条件的字段;
  索引可以有索引名称;

DML:INSERT,DELETE,SELECT,UPDATE

DCL:GRANT,REVOKE

用户账号及权限管理:
  用户账号:'user'@'host'
  host:此用户访问mysqld服务时允许通过哪些主机远程创建连接:
    IP、网络地址、主机名、通配符(%和_);

  禁止检查主机名:my.cnf中,[mysqld] skip_name_resolve = yes

创建用户账号:
  CREATE USER ‘username’@‘host’ [IDENTIFIED BY 'password'];
删除用户:
  DROP USER 'username'@'host'

授权:
  权限:管理权限、数据库、表、字段、存储例程
  GRANT priv_type,... ON [object_type]  db_name.ta_name TO 'user'@'host' [IDENTIFIED BY 'password'];
    priv_type:ALL [PRIVILEGES]
    db_name.tb_name:
      *.*:所有库的所有表;
      db_name.*:指定库的所有表;
      db_name.tb_name:指定库的指定表;
      db_name.routine_name:指定库的存储例程;

查看指定用户获得的授权:
  SHOW GRANTS FOR 'user'@'host';
  SHOW GRANTS FOR CURRENT_USER;

回收权限:
  REVOKE priv_type,... ON db_name.tb_name FROM 'user'@'host';

注意:MariaDB服务进程启动时会读取mysql库中的所有授权表至内存中;
  (1)GRANT或REVOKE等执行权限操作会保存于表中,MariaDB的服务进程会自动重读授权表;
  (2)对于不能够或不能及时重读授权表的命令,可手动让MariaDB的服务进程重读授权表;
    mysql> FLUSH PRIVILEGES;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3247694.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Burp安全扫描Web应用

一、浏览器设置代理 如下图所示,点击火狐浏览器的“扩展和主题”,搜索“代理”。 如下图所示,选择搜索到的第一个代理(选择任何一个都可以)。 如上图所示,第一个点击后,进入如下页面&#xff0…

51单片机学习(4)

一、串口通信 1.串口通信介绍 写完串口函数时进行模块化编程,模块化编程之后要对其进行注释,以便之后使用模块化函数,对模块化.c文件中的每一个函数进行注释。 注意:一个函数不能既在主函数又在中断函数中 模式1最常用&#xf…

Kafka Producer发送消息流程之消息异步发送和同步发送

文章目录 1. 异步发送2. 同步发送 1. 异步发送 Kafka默认就是异步发送,在Main线程中的多条消息,没有严格的先后顺序,Sender发送后就继续下一条,异步接受结果。 public class KafkaProducerCallbackTest {public static void mai…

linux搭建mysql主从复制(一主一从)

目录 0、环境部署 1、主服务器配置 1.1 修改mysql配置文件 1.2 重启mysql 1.3 为从服务器授权 1.4 查看二进制日志坐标 2、从服务器配置 2.1 修改mysql配置文件 2.2 重启mysql 2.3 配置主从同步 2.4 开启主从复制 3、验证主从复制 3.1 主服务器上创建test…

单片机开发中,如何在断电前保存数据到dataflash?

在单片机开发中,保存数据到 DataFlash(数据闪存)是一项常见任务,尤其是在断电前需要保留重要数据时。 我收集归类了一份嵌入式学习包,对于新手而言简直不要太棒,里面包括了新手各个时期的学习方向编程教学…

多线程实现方式和常用方法

1 进程和线程 进程Process: 每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。可以把进程简单理解为操作系统中运行的一个程序。 线程Thread:同一类线程…

音视频开发入门教程(2)配置FFmpeg编译 ~共210节

在上一篇博客介绍了安装,音视频开发入门教程(1)如何安装FFmpeg?共210节-CSDN博客 感兴趣的小伙伴,可以继续跟着老铁,一起开始音视频剪辑功能,😄首先查看一下自己的电脑是几核的&…

【代码规范】out = model(data)和out = model.forward(data.detach())的相似性和区别

【代码规范】out model(data)和out model.forward(data.detach())的相似性和区别 一、out model(data)和out model.forward(data.detach())的功能 二、out model(data)和out model.forward(data.detach())的区别 三、推理攻击下使用哪一个 文章目录 一、out model(data)…

Keka for Mac v1.4.3 中文下载 解压/压缩工具

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件,将其从左侧拖入右侧文件夹中,等待安装完毕2、应用程序显示软件图标,表示安装成功 三、运行测试1、打开软件2、文件访问权限修改3、访达扩展 安装完成!&#xff…

ppt文本框复制到word自动缩进的问题

ppt里的字是无缩进的: 复制粘贴到word中,突然出现2字符缩进: 微软官方嘴硬说没问题我也是无语!!word保留原格式复制后,出现莫名其妙的缩进 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直…

Kafka Producer发送消息流程之Sender发送线程和在途请求缓存区

文章目录 1. Sender发送数据1. 发送数据的详细过程:2. 关键参数配置 2. 在途请求缓存区 1. Sender发送数据 Sender线程负责将已经在RecordAccumulator中准备好的消息批次发送到Kafka集群。虽然消息在RecordAccumulator中是按照分区组织的,但Sender线程在…

强化学习的数学原理(2)

Value iteration & Policy itreation Value iteration algorithm 之前我们已经讲过怎么去求解贝尔曼最优公式,是利用contraction mapping theorem 来进行求解,我们知道这个contraction mapping theorem是一个迭代算法,实际上这个算法他有…

Android中OkHttp3中超时时间概述

目录 前言connectTimeoutreadTimeoutwriteTimeoutcallTimeoutpingInterval拓展 前言 可以看到,使用还是很简单的。主要相关的有这五个参数,其中我们常用到是就是connectTimeout、readTimeout和writeTimeout。 再看上图,可以看到默认下connec…

独立游戏《星尘异变》UE5 C++程序开发日志6——实现存档和基础设置系统

目录 一、存档类 1.创建一个SaveGame类 2.存储关卡内数据 3.加载关卡数据 4.关于定时器 5.存储全局数据 6.加载全局数据 二、存档栏 1.存档栏的数据结构 2.创建新存档 3.覆盖已有存档 4.删除存档 三、游戏的基础设置 1.存储游戏设置的数据结构 2.初始化设置 3.…

链表面试练习习题集(Java)

1. 思路&#xff1a; 因为杨辉三角是由二维数组构成&#xff0c;所以要先创建一个二维数组&#xff0c;如何用顺序表表示二维数组&#xff0c;可以通过List<List<Interger>>来表示一个二维数组&#xff0c;可以这样理解&#xff1a;先创建一个一维数组List&#x…

智慧消防建设方案(完整方案参考PPT)

智慧消防系统建设方案旨在通过物联网、大数据与云计算技术&#xff0c;集成火灾自动报警、智能监控、应急指挥等功能于一体。方案部署智能传感器监测火情&#xff0c;实时数据分析预警&#xff0c;实现火灾早发现、早处置。构建可视化指挥平台&#xff0c;优化应急预案&#xf…

Redis之List列表

目录 一.列表讲解 二.列表命令 三.内部编码 四.应用场景 Redis的学习专栏&#xff1a;http://t.csdnimg.cn/a8cvV 一.列表讲解 列表类型是用来存储多个有序的字符串&#xff0c;如下所示&#xff0c;a、b、c、d、e五个元素从左到右组成了一个有序的列表&#xff0c;列表中的…

android R ext4 image打包脚本介绍

一、Android R打包指令使用介绍 &#xff08;1&#xff09;mkuserimg_mke2fs #./mkuserimg_mke2fs --help usage: mkuserimg_mke2fs [-h] [--android_sparse] [--journal_size JOURNAL_SIZE][--timestamp TIMESTAMP] [--fs_config FS_CONFIG][--product_out PRODUCT_OUT][--b…

目标检测入门:4.目标检测中的一阶段模型和两阶段模型

在前面几章里&#xff0c;都只做了目标检测中的目标定位任务&#xff0c;并未做目标分类任务。目标检测作为计算机视觉领域的核心人物之一&#xff0c;旨在从图像中识别出所有感兴趣的目标&#xff0c;并确定它们的类别和位置。现在目标检测以一阶段模型和两阶段模型为代表的。…

常见漏洞之SSRF

一、SSRF简介 服务器端请求伪造&#xff08;SSRF&#xff09;是一种安全漏洞&#xff0c;允许攻击者通过构造恶意请求并利用存在缺陷的Web应用作为代理&#xff0c;向内外网发送请求&#xff0c;以实现攻击目的。SSRF攻击主要利用了服务端提供的某些功能&#xff0c;这些功能能…