zoukankan      html  css  js  c++  java
  • MariaDB Role

     一、MariaDB Role介绍

    MariaDB从10.0/10.1版本开始支持role。

    Role相当于各种权限的集合,可以给多个账户统一权限的修改直接通过修改role来实现,不需要每个账户一个一个的grant权限,方便运维和管理。role可以创建、删除、修改并作用到他管理的账户上。

    Role优点:

    1.在实际工作中,有大量的用户其权限是一样的,比如只读权限。如果每次在创建完用户后,DBA再去对每个用户去分别授权,那会是一件非常麻烦的事情。

    2.使用role的好处是DBA只需对权限种类进行划分,然后将不同权限授予不同的role,而不必再去关注到底有哪些具体的用户。

    3.当角色权限发生变化时,比如添加成员或者删除成员,系统管理员都无需执行任何关于权限的操作。

    二、Role各种操作与注意事项

    1.创建Role,并赋值给用户

    1)新建Role,并赋予Role所有库的查询权限

    create role v_select;

    grant select on *.* to v_select;

    2)新建测试用户,并将v_select Role赋值给测试用户

    create user hope@'127.0.0.1' identified by 'hope';

    flush privileges;

    grant v_select to hope@'127.0.0.1';

    3)测试用户登录数据库,并查询数据

     

    此时用户查询不到数据,用户也没有拥有任何Role

    4)测试用户激活Role,并查询

    set default role 与set role都要执行,set role只能使当前session 的role生效,推出后再次登录,role失效。

    set default role v_select;

    set role v_select;

    2、追加新的权限到Role

    1)将create权限赋值给v_select Role

    grant create  on *.* to v_select;

    以为v_select Role还没有drop table 的权限,所以用户hope不能删除表

    2)将drop权限赋值给v_select

    grant drop on *.* to v_select;

    3、DDL与DML追加到Role,用户生效问题

    1)DDL追加到Role

    上面2中,已经验证DDL追加到Role后,需要当前用户退出当前session后再登录数据库才能生效。

    2)DML追加到Role,当前session不生效,要退出后,再登录才能生效

    grant insert on *.* to v_select;

    4.撤销Role拥有的权限

    撤销Role拥有的权限后,用户立即失去相应权限

    revoke insert on *.* from  v_select;

    insert into test values(2);
    ERROR 1142 (42000): INSERT command denied to user 'hope'@'127.0.0.1' for table 'test'

    5.删除Role

    drop role v_select;

    删除role后,之前被赋值的用户,不再拥有任何权限

  • 相关阅读:
    汉诺塔难题
    函数的两种调用方式

    汉诺塔难题
    汉诺塔难题

    python中对小数取整
    linux中部署apache服务(http服务或者web服务)
    python中如何判断变量类型
    python中求余数
  • 原文地址:https://www.cnblogs.com/xibuhaohao/p/9952475.html
Copyright © 2011-2022 走看看