https://www.processon.com/view/link/61d5523407912973ef0c9076
https://www.processon.com/view/link/61d4003be401fd7a53e7aee2
https://www.processon.com/view/link/61d552161e08530666c06088
今日内容:
1.MySQL体系结构简单介绍 理解
2.连接管理 理解
3.配置管理 理解
4.用户管理 掌握
第1章 MySQL体系结构简单介绍
1.MySQL C/S结构 Clinet/Server
Clinet:
mysql命令
图形化工具
代码程序的mysql驱动
连接方式:
本地的socket文件直连
远程的IP+Port
2.mysqld核心程序工作原理
连接层:
- 接受用户连接请求
- 验证账号密码
- 连接线程
SQL处理层:
处理用户的SQL语句
数据处理层:
将SQL层执行的结果落地到磁盘上
第2章 MySQL启动关闭原理
1.myslqd_safe和mysqld
mysqld_safe作用:
1)官方提供的启动脚本最终会调用mysqld_safe命令脚本,然后mysqld_safe脚本又会调用mysqld主程序启动MySQL服务。
2)最终都是由mysqld启动,mysqld_safe可以看做是mysqld的守护进程。
3)mysqld_safe会启动并监视mysqld,如果mysqld发生意外错误可以重启服务。
4)mysqld_safe启动可以将mysqld的错误消息发送到数据目录中的host_name.err文件
5)可以读取的配置部分[mysqld],[server],[myslqd_safe], 为了兼容mysql_safe也会读取[safe_mysqld]中的配置
6)调用的mysqld是可以在[mysqld_safe]中用-mysqld, --mysqld-version指定
mysqld作用:
1).mysqld是mysql的核心程序,用于管理mysql的数据库文件以及用户的请求操作。
2).mysqld可以读取配置文件中的[mysqld]的部分
2.myslqd_safe和mysqld的应用场景
正常情况:
myslqd_safe
排错的时候:
如果启动失败并且不打日志,那么直接使用mysqld --defaults-file=/etc/my.cnf启动,此时会将报错打印到屏幕上
3.关闭myslq的正确姿势
脚本关闭:
/etc/init.d/mysqld stop
systemctl stop mysqld
命令关闭:
mysql -uroot -p123 -e "shutdown;"
kill系列:
kill pid
pkill mysql
killall mysql
第3章 MySQL配置管理
1.mysqld默认支持读取的配置文件路径
mysqld --help --verbose |grep my.cnf
/etc/my.cnf
/etc/mysql/my.cnf
/usr/local/mysql/etc/my.cnf
~/.my.cnf
2.默认配置优先级
1 /etc/my.cnf
2 /etc/mysql/my.cnf
3 /usr/local/mysql/etc/my.cnf
4 ~/.my.cnf
3.优先级之间的关系
如果多个配置文件参数一样,那么都一样
如果多个配置文件参数不一样,以最后读到的配置为准
如果前面的有,后面的没有,前面的也会读取生效
第4章 用户管理
1.用户的定义
Linux: 用户名+密码
MySQL: IP白名单+用户名+密码
举例:
root@'10.0.0.7'
root@'10.0.0.8'
安装数据库客户端
root@'10.0.0.%'
root@'%'
root@'localhost'
root@'127.0.0.1'
解释:
白名单地址@账号名
%表示是任意的IP
2.查看用户
select user,host from mysql.user;
3.创建用户
create user 账户名@'IP白名单';
create user linux7@'10.0.0.7';
create user linux7@'10.0.0.%';
create user linux7@'localhost';
create user linux7@'%';
4.远程连接
mysql -u账户 -p密码 -h服务的地址
刚刚创建还没有设置登录密码
5.创建用户密码
普通用户修改自己的密码: 需要知道自己当前的密码
set password=password('123456');
root用户修改其他用户密码: 不需要知道其他用户密码
alter user linux7@'10.0.0.%' identified by '123';
该用户没有密码
6.删除用户
drop user [email protected];
drop user linux7@'10.0.0.%';
7.创建用户的同时创建密码
create user linux7@'%' identified by '321';
create user linux7@'10.0.0.%' identified by '123456';
create user linux7@'10.0.0.7' identified by '123';
第5章 找回root密码
1.找回root密码的前提
只能在mysql服务器本机修改
2.停止MySQL服务
/etc/init.d/mysqld stop
3.启动时添加跳过授权表验证
mysqld_safe --skip-grant-tables --user=mysql
4.直接使用root登录
mysql -uroot
5.修改root密码
报错:
mysql> set password=password('admin');
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> alter user root@'localhost' identified by 'admin';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
正确改法:
UPDATE mysql.user SET authentication_string=PASSWORD("admin") WHERE user='root' and host='localhost';
更新 库.表 设置 字段=加密后密码 条件 用户名 并且 地址
6.重启数据库
mysql> shutdown;
systemctl start mysqld
7.验证登录
mysql -uroot -padmin