1. 一條sql語句從client端發出到得到結果的過程
連接層 --》 sql層 --》 存儲引擎層
1.1 連接層
1.3.2.1 連接層 (1)提供連接協議:TCP/IP 、SOCKET (2)提供驗證:用戶、密碼,IP,SOCKET (3)提供專用連接線程:接收用戶SQL,返回結果 通過以下語句可以查看到連接線程基本情況 mysql> show processlist;
1.2 sql層
(1)接收上層傳送的SQL語句 (2)語法驗證模塊:驗證語句語法,是否滿足SQL_MODE (3)語義檢查:判斷SQL語句的類型 DDL :數據定義語言 DCL :數據控制語言 DML :數據操作語言 DQL: 數據查詢語言 ... (4)權限檢查:用戶對庫表有沒有權限 (5)解析器:對語句執行前,進行預處理,生成解析樹(執行計划),說白了就是生成多種執行方案. (6)優化器:根據解析器得出的多種執行計划,進行判斷,選擇最優的執行計划 代價模型:資源(CPU IO MEM)的耗損評估性能好壞 (7)執行器:根據最優執行計划,執行SQL語句,產生執行結果 執行結果:在磁盤的xxxx位置上 (8)提供查詢緩存(默認是沒開啟的),會使用redis tair替代查詢緩存功能 (9)提供日志記錄(日志管理章節):binlog,默認是沒開啟的。
1.3 存儲引擎層(類似於linux的文件系統)
負責根據SQL層執行的結果,從磁盤上拿數據。
將16進制的磁盤數據,交由SQL結構化化成表,
連接層的專用線程返回給用戶。
2. 基礎管理
2.1 用戶、權限管理
2.1.1 用戶白名單
用戶名@'白名單' 白名單支持的方式? 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'
管理操作:
增: mysql> create user oldboy@'10.0.0.%' identified by '123'; 查: mysql> desc mysql.user; ----> authentication_string mysql> select user ,host ,authentication_string from mysql.user 改: mysql> alter user oldboy@'10.0.0.%' identified by '456'; 刪: mysql> drop user oldboy@'10.0.0.%';
2.1.2 權限
權限管理操作:
mysql> grant all on wordpress.* to wordpress@'10.0.0.%' identified by '123';
常用權限介紹:
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:超級管理員才具備的,給別的用戶授權的功能
權限作用范圍:
*.* ---->管理員用戶 wordpress.* ---->開發和應用用戶 wordpress.t1
授權語法:
mysql> grant select ,update,insert,delete on app.* to app@'10.0.0.%' identified by '123'; mysql> grant all on *.* to root@'10.0.0.%' identified by '123';
3. 新版本中授權的特性
建用戶和授權分開了
grant 不再支持自動創建用戶了,不支持改密碼
授權之前,必須要提前創建用戶。
3.1 查看及回收權限
show grants for app@'10.0.0.%'; revoke delete on app.* from app@'10.0.0.%';