mysql 体系结构与管理
MySQL基本概念
C/S 架构
TCP/IP 和socket 连接
实例:mysqld(守护进程)+ master thread(管理进程) + 干活的thread + 被分配给mysql的内存
mysql的专有内存: 是mysql的一种机制,为了让mysql在一启动就能,在内存中。划出自己的专有内存,来更快的响应SQL语句
SQL语句
- DQL
- DML
- DDL
- DCL
MySQL的层次结构
image.pngSQL 语句执行过程
只有了解SQL语句执行过程,才能知道如何优化SQL语句
image.png
MySQL的逻辑存储
库
表
表属性
列/字段
列属性
数据行/记录
MySQL的物理存储
库: 文件系统上的目录
表: MyISAM: .frm 存储表结构 .MYD 存储表数据 .MYI 存储索引
或 InnoDB: .frm 存储表结构 .ibd 存储表数据和表索引 ibdata1:数据库字典信息
MySQL InnoDB 的 段区页
MySQL默认给idb一次 64个连续的page,放数据,一个page放索引
page: 默认16kb,可以调整大小。但调整后区大小不变 16*64 变成 32*32
区:默认连续的64个page,即1M
段:一个或几个区,默认一个表为一个段
用户和权限
创建用户
create user wordpress@'10.0.0.%' identified by '123';
修改用户密码:alter user wordpress@'10.0.0.%' identified by ‘123’;
删除用户:drop user wordpress@'10.0.0.%';
授权用户: grant 权限 on 库名.表名 to 用户名@'IP地址' identified by '123';
回收权限:revoke 权限 on 库名.表名 from 用户名@'IP地址'
查看权限: show grants for 用户名@'IP地址'
权限列表
ALL (……)
with grant option(给别人授权的权限,一般为本地管理员才会有,加在授权语句末尾)
MySQL启动方式
- 脚本启动
- systemctl启动
- mysqld_safe
- mysqld
其中mysqld_safe 可以加启动参数,用于维护型任务,而且命令行的优先级最高,但同时也会读取/etc/my.cnf
关闭数据库
- 脚本关闭
- systemctl 关闭
- mysqladmin -uroot -p123 shutdown
初始化配置
初始化配置是mysql安装后初始化后,启动之前的配置
初始化配置作用
- 影响数据库的启动,以及数据库的配置
- 影响客户端功能
初始化配置的方法
- 初始化配置文件(/etc/my.cnf)
- 启动命令行进行设置(mysqld_safe,mysqld)
- 预编译配置(仅限于编译安装)
初始化配置文件书写格式
[标签]
xxx=xxx
xxx=xxx
xxx=xxx
[标签]
xxx=xxx
xxx=xxx
xxx=xxx
---------------------------------------------------------------------------
# 服务端标签
[mysqld]
[mysqld_safe]
[server] //包含上面两个
# 客户端标签
[mysql]
[mysqladmin]
[mysqldump]
[client] //包含上面的标签
# 生产中建议使用集合小的标签,不要使用范围性标签[server][client]
MySQL 配置文件简易模板
[mysqld]
user=mysql
basedir=/application/mysql/
datadir=/data/mysql/data
port=3306
socket=/tmp/mysql.socket
[mysql]
socket=/tmp/mysql.socket
MySQL 配置文件依次读取顺序(了解)
/etc/my.cnf===>/etc/mysql/my.cnf===>/usr/local/mysql/my.cnf====>~/.my.cnf
myqld --defaults-file=xxx.cnf
强制使用配置文件
MySQL连接管理
- TCP/IP
- SOCKET
当TCP/IP和SOCKET 同时使用连接数据库时,数据用TCP/IP连接
show processlist
查看当前连接的线程 localhost 则为socket连接