sql語句執行過程及mysql權限管理


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.%'

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM