MySQL权限

MySQL权限

一. 用户标识

用户标识= 用户名+ IP

二. 用户权限相关的表

  1. mysql.user:一行记录代表一个用户标识(用户名+ip)
  2. mysql.db:一行记录代表一个数据库的权限
  3. mysql.tables_priv:一行记录代表对表的权限
  4. mysql.columns_priv:一行记录代表对某一列的权限

三. 权限相关的常用命令

  1. 为用户授权

    #为用户dev授权,允许查询architect库下的account表的id和name列
    grant SELECT(id,name) on architect.account TO 'dev';
    
  2. 查询用户权限

    #查看用户dev被赋予的所有权限
    show grants for dev;
    
  3. 取消对用户的授权

    REVOKE SELECT(id,name) on architect.account TO 'dev';
    

四. MySQL的角色

  1. MySQL中的角色本质上就是用户(Role Like)。

  2. 查询角色相关变量

    show variables like '%proxy%';
    
  3. 开启角色代理

    set GLOBAL check_proxy_users =1;
    set GLOBAL mysql_native_password_proxy_users = 1;
    
  4. 创建一个角色:dev_role

    create USER 'dev_role'
    
  5. 创建2个开发用户

    create USER 'rd1';
    create USER 'rd2';
    
  6. 把这2个用户加到用户组中

    grant proxy on 'dev_role' to  'rd1';
    grant proxy on 'dev_role' to  'rd2';
    
  7. 查看rd1的权限,发现rd1已经属于dev_role角色

    show grants from 'rd1';
    
  8. 为用户组授权(也即为用户组所对应的用户本身授权)

    grant select(id,name) on architect.account to 'dev_role';
    

    这样一来,该用户组下的所有用户都具有的相同的权限。

发布了93 篇原创文章 · 获赞 105 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章