用戶權限管理:
1. 創建用戶和設置密碼:
create user test@'localhost' IDENTIFIED by 'test';
重點解釋一下@'localhost' 在這個語句中的作用(白名單的作用:就是設置哪些網段的人可以才有權限)
test@'10.0.0.%' 分配10.0.0.XXX/24為白名單(24就是255.255.255.0)
test@'%' 分配全部地址為白名單(只要能ping通)
test@'10.0.0.200' 分配唯一地址為白名單
test@'localhost' 分配自己為白名單
test@'db02' 分配主機名為白名單
test@'10.0.0.5%' 分配網段白名單
創建完用戶需要執行:FLUSH PRIVILEGES; 作者不執行也可以賦權。
修改密碼:alter user test@'10.0.0.%' identified by '456';
2. 刪除用戶:
drop user test;
3. 授權
grant select, insert, update, delete on work_db.* to test@'%';
4. 查詢用戶權限:
show privileges; -- 展示mysql權限。
其中 Grant option 權限特殊,是給別人授權的權限,語法為原授權語句后加 with Grant option。
show grants for test; -- 查看賦權語句。
select * from mysql.db where user='test' -- 查詢賦權的實際情況(數據庫級別)
select * from mysql.user where user='test' -- 查詢賦權的實際情況(全局 *.*)
select * from mysql.tables_priv where user='test' -- 查詢賦權的實際情況(表級別)
select * from mysql.columns_priv where user='test' -- 查詢賦權的實際情況(列級別)
5. mysql賦權級別
5.1.全局層級
全局權限適用於一個給定服務器中的所有數據庫。這些權限存儲在mysql.user表中。GRANT ALL ON *.* to 和REVOKE ALL ON *.* from 只授予和撤銷全局權限。
5.2.數據庫層級
數據庫權限適用於一個給定數據庫中的所有目標。這些權限存儲在mysql.db和mysql.host表中。GRANT ALL ON db_name.* to 和REVOKE ALL ON db_name.* from 只授予和撤銷數據庫權限。
5.3.表層級
表權限適用於一個給定表中的所有列。這些權限存儲在mysql.tables_priv表中。GRANT ALL ON db_name.tbl_name to 和REVOKE ALL ON db_name.tbl_name from 只授予和撤銷表權限。
5.4.列層級
列權限適用於一個給定表中的單一列。這些權限存儲在mysql.columns_priv表中。當使用REVOKE時,您必須指定與被授權列相同的列。
5.5.子程序層級
CREATE ROUTINE, ALTER ROUTINE, EXECUTE和GRANT權限適用於已存儲的子程序。這些權限可以被授予為全局層級和數據庫層級。而且,除了CREATE ROUTINE外,這些權限可以被授予為子程序層級,並存儲在mysql.procs_priv表中。
5. 回收權限:
上述案例的回收權限語句: revoke select, insert, update, delete on work_db.* from test@'%'; 關鍵字:revoke , from。
其他:
參考:
https://www.cnblogs.com/xibuhaohao/p/10935815.html
https://blog.csdn.net/diyhzp/article/details/63683475
select, insert, update, delete