https://www.processon.com/view/link/61d5523407912973ef0c9076
https://www.processon.com/view/link/61d4003be401fd7a53e7aee2
https://www.processon.com/view/link/61d552161e08530666c06088
今日內(nèi)容:
1.MySQL體系結(jié)構(gòu)簡單介紹 理解
2.連接管理 理解
3.配置管理? 理解
4.用戶管理? 掌握
第1章 MySQL體系結(jié)構(gòu)簡單介紹
1.MySQL C/S結(jié)構(gòu) Clinet/Server
Clinet:
mysql命令
圖形化工具
代碼程序的mysql驅(qū)動
連接方式:
本地的socket文件直連
遠(yuǎn)程的IP+Port
2.mysqld核心程序工作原理
連接層:
- 接受用戶連接請求
- 驗證賬號密碼
- 連接線程
SQL處理層:
處理用戶的SQL語句
數(shù)據(jù)處理層:
將SQL層執(zhí)行的結(jié)果落地到磁盤上
第2章 MySQL啟動關(guān)閉原理
1.myslqd_safe和mysqld
mysqld_safe作用:
1)官方提供的啟動腳本最終會調(diào)用mysqld_safe命令腳本,然后mysqld_safe腳本又會調(diào)用mysqld主程序啟動MySQL服務(wù)。
2)最終都是由mysqld啟動杠愧,mysqld_safe可以看做是mysqld的守護(hù)進(jìn)程。
3)mysqld_safe會啟動并監(jiān)視mysqld夯接,如果mysqld發(fā)生意外錯誤可以重啟服務(wù)舌菜。
4)mysqld_safe啟動可以將mysqld的錯誤消息發(fā)送到數(shù)據(jù)目錄中的host_name.err文件
5)可以讀取的配置部分[mysqld],[server],[myslqd_safe], 為了兼容mysql_safe也會讀取[safe_mysqld]中的配置
6)調(diào)用的mysqld是可以在[mysqld_safe]中用-mysqld, --mysqld-version指定
mysqld作用:
1).mysqld是mysql的核心程序,用于管理mysql的數(shù)據(jù)庫文件以及用戶的請求操作澈蚌。
2).mysqld可以讀取配置文件中的[mysqld]的部分
2.myslqd_safe和mysqld的應(yīng)用場景
正常情況:
myslqd_safe
排錯的時候:
如果啟動失敗并且不打日志,那么直接使用mysqld --defaults-file=/etc/my.cnf啟動,此時會將報錯打印到屏幕上
3.關(guān)閉myslq的正確姿勢
腳本關(guān)閉:
/etc/init.d/mysqld stop
systemctl stop mysqld
命令關(guān)閉:
mysql -uroot -p123 -e "shutdown;"
kill系列:
kill pid
pkill mysql
killall mysql
第3章 MySQL配置管理
1.mysqld默認(rèn)支持讀取的配置文件路徑
mysqld --help --verbose |grep my.cnf
/etc/my.cnf
/etc/mysql/my.cnf
/usr/local/mysql/etc/my.cnf
~/.my.cnf
2.默認(rèn)配置優(yōu)先級
? 1 /etc/my.cnf
? 2 /etc/mysql/my.cnf
? 3 /usr/local/mysql/etc/my.cnf
? 4 ~/.my.cnf
3.優(yōu)先級之間的關(guān)系
如果多個配置文件參數(shù)一樣,那么都一樣
如果多個配置文件參數(shù)不一樣,以最后讀到的配置為準(zhǔn)
如果前面的有,后面的沒有,前面的也會讀取生效
第4章 用戶管理
1.用戶的定義
Linux: 用戶名+密碼
MySQL: IP白名單+用戶名+密碼
舉例:
root@'10.0.0.7'
root@'10.0.0.8'
安裝數(shù)據(jù)庫客戶端
root@'10.0.0.%'
root@'%'
root@'localhost'
root@'127.0.0.1'
解釋:
白名單地址@賬號名
%表示是任意的IP
2.查看用戶
select user,host from mysql.user;
3.創(chuàng)建用戶
create user 賬戶名@'IP白名單';
create user linux7@'10.0.0.7';
create user linux7@'10.0.0.%';
create user linux7@'localhost';
create user linux7@'%';
4.遠(yuǎn)程連接
mysql -u賬戶 -p密碼 -h服務(wù)的地址
剛剛創(chuàng)建還沒有設(shè)置登錄密碼
5.創(chuàng)建用戶密碼
普通用戶修改自己的密碼: 需要知道自己當(dāng)前的密碼
set password=password('123456');
root用戶修改其他用戶密碼: 不需要知道其他用戶密碼
alter user linux7@'10.0.0.%' identified by '123';
該用戶沒有密碼
6.刪除用戶
drop user linux7@10.0.0.7;
drop user linux7@'10.0.0.%';
7.創(chuàng)建用戶的同時創(chuàng)建密碼
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服務(wù)器本機(jī)修改
2.停止MySQL服務(wù)
/etc/init.d/mysqld stop
3.啟動時添加跳過授權(quán)表驗證
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';
更新? 庫.表? ? 設(shè)置? ? ? ? ? 字段=加密后密碼? ? ? ? ? ? ? 條件? 用戶名? ? 并且? ? ? 地址
6.重啟數(shù)據(jù)庫
mysql> shutdown;
systemctl start mysqld
7.驗證登錄
mysql -uroot -padmin