1、Mysql模型(C/S)
2、連接方式
TCP/IP:mysql -uroot -h xx.xx.xx.xx -P3306 -pxxx
Socket: mysql -uroot -pxx -S /tmp/mysql.sock
3、Mysql程序結構
連接層:
提供連接協議:TCP/IP 、SOCKET
提供驗證:用戶、密碼,IP,SOCKET
提供專用連接線程:接收用戶SQL,返回結果
SQL層:
(1)接收上層傳送的SQL語句
(2)語法驗證模塊:驗證語句語法,是否滿足SQL_MODE
(3)語義檢查:判斷SQL語句的類型
DDL :數據定義語言
DCL :數據控制語言
DML :數據操作語言
(4)權限檢查:用戶對庫表有沒有權限
(5)解析器:對語句執行前,進行預處理,生成解析樹(執行計劃),說白了就是生成多種執行方案.
(6)優化器:根據解析器得出的多種執行計劃,進行判斷,選擇最優的執行計劃
代價模型:資源(CPU IO MEM)的耗損評估性能好壞
(7)執行器:根據最優執行計劃,執行SQL語句,產生執行結果
執行結果:在磁盤的xxxx位置上
(8)提供查詢緩存(默認是沒開啓的),會使用redis tair替代查詢緩存功能
(9)提供日誌記錄(日誌管理章節):binlog,默認是沒開啓的。
存儲層:
負責根據SQL層執行的結果,從磁盤上拿數據。
將16進制的磁盤數據,交由SQL結構化化成表,
連接層的專用線程返回給用戶。
4、用戶,權限管理
用戶白名單支持的方式:
root@'%'
root@'localhost'
root@'192.168.2.2'
root@'192.168.2.%'
root@'192.168.2.2%'
root@'db01'
root@'192.168.2.0/24'
常用權限:
ALL:
SELECT,INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE
ALL : 以上所有權限,一般是普通管理員擁有的
with grant option:超級管理員才具備的,給別的用戶授權的功能
權限作爲範圍:
*.* ———— 管理用戶
mysql.* ———— 一般用戶
mysql.user
權限管理操作:
創建用戶: create user wordpress@'192.168.2.%' identified by
'123456'
添加權限: grant all on wordpress.* to wordpress@'192.168.2.%' identified by '123456'
查看權限: show grants for wordpress@'192.168.2.%'
回收權限: revoke delete on wordpress.* from wordpress@'192.168.2.%'
5、忘記管理員密碼
1、先關閉mysql systemctl stop mysqld
2、使用mysqld_safe啓動: mysqld_safe --skip-grant-tables &
3、進入數據庫修改密碼:
mysql> flush privileges;
mysql> alter user root@'localhost' identified by '123456';