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;

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值