利用 MySQL proxies_priv(模擬角色)實現類似用戶組管理 角色(Role)可以用來批量管理用戶,同一個角色下的用戶,擁有相同的許可權。 MySQL5.7.X以後可以模擬角色(Role)的功能,通過mysql.proxies_priv模擬實現 本文參考自:http://www.innom ...
利用 MySQL proxies_priv(模擬角色)實現類似用戶組管理
角色(Role)可以用來批量管理用戶,同一個角色下的用戶,擁有相同的許可權。
MySQL5.7.X以後可以模擬角色(Role)的功能,通過mysql.proxies_priv模擬實現
本文參考自:http://www.innomysql.net
1、配置proxy
mysql> show variables like "%proxy%"; #查看當前proxy是否開啟,下圖表示沒有開啟
mysql> set global check_proxy_users =on; #開啟proxy 下圖表示已開啟
mysql> set global mysql_native_password_proxy_users = on;
mysql> exit
Bye #以上設置參數,對當前會話無效,需要退出後重新登錄,或直接設置到my.cnf中去
2、創建用戶
mysql> create user will_dba; #類似組
mysql> create user 'will';
mysql> create user 'tom'; #密碼就不設置了,如需設置密碼後面加上identified by '123'
3、將will_dba的許可權映射(map)到will,tom
mysql> grant proxy on will_dba to will;
mysql> grant proxy on will_dba to tom;
4、給will_dba(模擬的Role)賦予實際許可權
mysql> grant select on *.* to will_dba;
5、查看 will_dba 的許可權
mysql> show grants for will_dba;
6、查看will,和tom 的許可權
mysql> show grants for will;
mysql> show grants for tom;
7、查看 proxies_priv的許可權
mysql> mysql> select * from mysql.proxies_priv;
8、驗證
使用will和tom用戶查看資料庫
[root@test-1 ~]# mysql -utom -p
mysql> show databases; #tom用戶我們之前沒有賦予許可權,但這裡可以查看
mysql> show tables;
mysql> select * from user\G
mysql.proxies_priv僅僅是對Role的模擬,和Oracle的角色還是有所不同.官方稱呼為Role like
MySQL5.6.X 模擬Role功能需要安裝插件,具體方法請參考:
https://dev.mysql.com/doc/refman/5.6/en/proxy-users.html
https://dev.mysql.com/doc/refman/5.6/en/pluggable-authentication.html