一篇搞懂MySQL許可權控制
MySQL版本:5.6.36-log
用例 IP172.30.10.12
;資料庫testdb
;資料表t_test
;使用者test
;
賦予許可權:
-
GRANT 是賦予許可權的關鍵字
,後面接賦予的許可權種類常見的有
ALL PRIVILEGES
,INSERT
,DELETE
,UPDATE
,SELECT
,CREATE
,DROP
等。 -
ON 指將哪個資料庫
的許可權賦予使用者,格式為
testdb.t_test
。*
為表萬用字元,*.*
代表所有庫所有表,testdb.*
代表 testdb 資料庫下所有表。 -
TO 指將許可權賦予哪個使用者
,格式為
test@'172.30.10.12'
,%
為IP萬用字元:test@'%'
。
ps:@
前面可以加''
,也可以不加,後面必須加,test@'172.30.10.12'
test@'localhost'
'test'@'%'
。 - WITH GRANT OPTION 指定該使用者能夠對其他使用者進行許可權管理。
全部許可權
GRANT ALL PRIVILEGES ON *.* TO test@'localhost';
指定資料庫增刪改查資料許可權
GRANT INSERT, DELETE, UPDATE, SELECT ON testdb.* TO test@'localhost';
建立表和刪除表的許可權
GRANT CREATE, DROP ON testdb.* TO test@'localhost';
賦予許可權同時指定該使用者能夠給其他使用者進行許可權管理。
GRANT ALL PRIVILEGES ON testdb.* TO user@'localhost' WITH GRANT OPTION;
解除許可權:
- REVOKE 是解除許可權的關鍵字 ,後面接賦予的許可權種類,對應賦予許可權的 GRANT。
- ON 指將哪個資料庫 的許可權移除。
- FROM 指將許可權從哪個使用者 移除,對應賦予許可權的 TO。
如果你想移除 test 使用者的所有許可權,可以執行一下命令:
REVOKE ALL PRIVILEGES, GRANT OPTION FROM test;
解除指定資料庫許可權
REVOKE ALL PRIVILEGES ON testdb.* from test@'localhost';
其他:
-
如果使用了
IDENTIFIED BY PASSWORD
或IDENTIFIED BY
,指定的密碼就會變成這個使用者的新密碼,即使這個使用者已經存在且設定了密碼。
MySQL 5.7.2 之後的版本 使用就不會修改密碼,因為 GRANT 設計使用者單一用途許可權管理。 -
設定許可權之後要使用
FLUSH PRIVILEGES
。 - 已連線的使用者需要重新連線,許可權才能生效。