002 ---- MySQL 体系结构与管理

1、MySQL 程序运行的原理

1.1 mysql 结构

1

1.2 一条SQL语句的连接过程

连接层:

1、提供链接协议:tcp/ip、socket

2、提供验证:用户、密码、IP、socket

3、提供专用链接线程:接受用户SQL、返回结果

1.3 表的物理存储结构

扫描二维码关注公众号,回复: 6638770 查看本文章

myisam: user.frm user.myd, user.myi

innodb: user.ibd、user.frm

存储列相关信息:frm

存储数据行+索引:ibd

1.4 表的表空间、段、区、页

页:最小的存储单元、默认16K

区: 64个连续的页:共1M

段:一个表就是一个段,包含一个或多个区

2、 基础管理

用户、权限管理

用户名@'白名单'
白名单支持的方式?
wordpress@'10.0.0.%'    
wordpress@'%'
wordpress@'10.0.0.200'
wordpress@'localhost'
wordpress@'db02'
wordpress@'10.0.0.5%'
wordpress@'10.0.0.0/255.255.254.0'

管理操作:

create user xiaopan@‘192.168.1.%’ identified by '123';

desc mysql.user;

select user,host,authentication_string from mysql.user;

alter user 'xiaopan'@'192.168.1.%' identified by '123456';

drop user 'xiaopan'@'192.168.1.%';

权限管理:

grant all on *.* to 'wordpress'@'%' identified by 'wordpress';

flush privileges;

ALL 权限包括:

select、insert update、drop 、delete、create 、reload 、shutdown、process、file 、index、alter、show database、showtable等等

提示: 8.0 在grant 命令添加新特性

新建用户和授权分开了,必须先创建用户在授权即:

create user ‘haha'@'192.168.1.%'  identified by '123';

grant all  on  *.*   to 'haha'@'192.168.1.%';

show grants for 'haha'@'192.168.1.%';

回收权限:

revoke delete on app.* from app@’10.0.0.%‘;

本地管理员用户密码忘记:

mysql_safe --skip-grant-tables --skip-networking &

alter user root@'localhost'  identified by '111111';

flsh privileges;

5、多实例的应用

5.1 准备多个目录

mkdir /data/330{7,8,9}/data -p

5.2 准备配置文件

cat > /data/3307/my.cnf <<EOF
[mysqld]
basedir=/app/mysql
datadir=/data/3307/data
socket=/data/3307/mysql.sock
log_error=/data/3307/mysql.log
port=3307
server_id=7
log_bin=/data/3307/mysql-bin
EOF

cat > /data/3308/my.cnf <<EOF
[mysqld]
basedir=/app/mysql
datadir=/data/3308/data
socket=/data/3308/mysql.sock
log_error=/data/3308/mysql.log
port=3308
server_id=8
log_bin=/data/3308/mysql-bin
EOF

cat > /data/3309/my.cnf <<EOF
[mysqld]
basedir=/app/mysql
datadir=/data/3309/data
socket=/data/3309/mysql.sock
log_error=/data/3309/mysql.log
port=3309
server_id=9
log_bin=/data/3309/mysql-bin
EOF

5.3 如果/etc/目录下有my.cnf 文件需要把该文件移走

mv /etc/my.cnf /etc/my.cnf.bak

5.4 初始化三套数据 

mysqld --initialize-insecure --user=mysql --datadir=/data/3307/data --basedir=/app/mysql --user=mysql  

mysqld --initialize-insecure --user=mysql --datadir=/data/3308/data --basedir=/app/mysql --user=mysql

5.5 多实例管理

cd /etc/systemd/system
cp mysqld.service mysqld3307.service
cp mysqld.service mysqld3308.service
cp mysqld.service mysqld3309.service

vim mysqld3307.service
ExecStart=/app/mysql/bin/mysqld  --defaults-file=/data/3307/my.cnf
vim mysqld3308.service
ExecStart=/app/mysql/bin/mysqld  --defaults-file=/data/3308/my.cnf
vim mysqld3309.service
ExecStart=/app/mysql/bin/mysqld  --defaults-file=/data/3309/my.cnf

5.6 授权

chown -R mysql.mysql /data/

5.7  把/etc/目录下的my.cnf 文件移动回来

mv /etc/my.cnf.bak /etc/my.cnf

猜你喜欢

转载自blog.csdn.net/pang_2899/article/details/92671835