MySQL權限
一. 用戶標識
用戶標識= 用戶名+ IP
二. 用戶權限相關的表
- mysql.user:一行記錄代表一個用戶標識(用戶名+ip)
- mysql.db:一行記錄代表一個數據庫的權限
- mysql.tables_priv:一行記錄代表對錶的權限
- mysql.columns_priv:一行記錄代表對某一列的權限
三. 權限相關的常用命令
-
爲用戶授權
#爲用戶dev授權,允許查詢architect庫下的account表的id和name列 grant SELECT(id,name) on architect.account TO 'dev';
-
查詢用戶權限
#查看用戶dev被賦予的所有權限 show grants for dev;
-
取消對用戶的授權
REVOKE SELECT(id,name) on architect.account TO 'dev';
四. MySQL的角色
-
MySQL中的角色本質上就是用戶(Role Like)。
-
查詢角色相關變量
show variables like '%proxy%';
-
開啓角色代理
set GLOBAL check_proxy_users =1; set GLOBAL mysql_native_password_proxy_users = 1;
-
創建一個角色:dev_role
create USER 'dev_role'
-
創建2個開發用戶
create USER 'rd1'; create USER 'rd2';
-
把這2個用戶加到用戶組中
grant proxy on 'dev_role' to 'rd1'; grant proxy on 'dev_role' to 'rd2';
-
查看rd1的權限,發現rd1已經屬於dev_role角色
show grants from 'rd1';
-
爲用戶組授權(也即爲用戶組所對應的用戶本身授權)
grant select(id,name) on architect.account to 'dev_role';
這樣一來,該用戶組下的所有用戶都具有的相同的權限。