数据库
首页 > 数据库> > MySQL 的 GRANT和REVOKE 命令

MySQL 的 GRANT和REVOKE 命令

作者:互联网

MySQL 的 GRANT和REVOKE 命令



GRANT - 授权

将指定 操作对象 的指定 操作权限 授予指定的 用户; 发出该 GRANT语句的可以是数据库管理员,也可以是该数据库对象的创建者;

  1. 查询

    • 查看用户自己权限

      SHOW GRANTS;

    • 查看其他用户权限

      SHOW GRANTS FOR 'user'@'host';

    Tips: host 可以使用通配符 %;如 'user'@'%', 'user'@'192.168.0.%';

  2. 授权

    • 语法

      GRANT 权限 ON 数据库对象 TO 用户 [WITH GRANT OPTION];

    • 栗子

      • 授予 super用户所有权限

        GRANT ALL [PRIVILEGES] ON . TO 'user'@'%';

      • 授予用户 INSERT 权限

        CREATE INSERT ON db_name.* TO 'user'@'%' IDENTIFIED BY 'newpasswd';

      • 授予用户 SELECT, UPDATE, DELETE 权限

        GRANT SELECT, UPDATE, DELETE ON db_name.* TO 'user'@'localhost'

  3. 刷新

    FLUSH PRIVILEGES;

Tips:


REVOKE - 回收授权

Tips:


GRANT允许的特权


实例

用户操作

  1. 创建用户

    CREATE USER 'user'@'%' IDENTIFIED BY 'newpasswd';

  2. 重命名用户

    CREATE USER 'old_user'@'%' TO 'new_user'@'%';

  3. 删除用户

    1. 查询用户

      SELECT user,host FROM mysql.user;

    2. 删除用户

      DROP USER 'user'@'host';

查看和刷新权限

授权与取消授权

  1. 用法

    GRANT 权限 ON 数据库对象 TO 用户 [WITH GRANT OPTION];   -- 授权
    REVOKE 权限 ON 数据库对象 FROM 用户 [CASCADE | RESTRICT];   -- 取消授权
    

    Tips: REVOKE 跟 GRANT 的语法差不多,只需要把关键字 TO 换成 FROM 即可

  2. 栗子

    • 添加权限(和已有权限合并,不会覆盖已有权限)

      -- 添加普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利
      grant select, insert, update, delete on testdb.* to common_user@'%'
      
      -- 添加数据库开发人员,创建表、索引、视图、存储过程、函数。。。等权限
      grant create, alter, drop on testdb.* to developer@'192.168.0.%';
      
      -- 添加操作 MySQL 外键权限
      grant references on testdb.* to developer@'192.168.0.%';
      
      -- 添加操作 MySQL 临时表权限
      grant create temporary tables on testdb.* to developer@'192.168.0.%';
      
      -- 添加操作 MySQL 索引权限
      grant index on testdb.* to developer@'192.168.0.%';
      
      -- 添加操作 MySQL 视图、查看视图源代码 权限
      grant create, show view on testdb.* to developer@'192.168.0.%';
      
    • 删除授权

      -- 删除普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利
      revoke select, insert, update, delete on testdb.* from common_user@'%'
      
      -- 删除数据库开发人员,创建表、索引、视图、存储过程、函数。。。等权限
      revoke create, alter, drop on testdb.* from developer@'192.168.0.%';
      
      -- 删除操作 MySQL 外键权限
      revoke references on testdb.* from developer@'192.168.0.%';
      
      -- 删除操作 MySQL 临时表权限
      revoke create temporary tables on testdb.* from developer@'192.168.0.%';
      
      -- 删除操作 MySQL 索引权限
      revoke index on testdb.* from developer@'192.168.0.%';
      
      -- 删除操作 MySQL 视图、查看视图源代码 权限
      revoke create, show view on testdb.* from developer@'192.168.0.%';
      
    • DBA 权限管理

      -- 普通 DBA 管理某个 MySQL 数据库的权限
      grant all [privileges] on testdb to dba@'localhost'
      
      -- 高级 DBA 管理 MySQL 中所有数据库的权限。
      grant all on *.* to dba@'localhost'
      
    • 细密度授权

      -- 作用在整个 MySQL 服务器上
      grant select on *.* to dba@localhost;   -- dba 可以查询 MySQL 中所有数据库中的表
      grant all    on *.* to dba@localhost;   -- dba 可以管理 MySQL 中的所有数据库
      
      -- 作用在单个数据库上
      grant select on testdb.* to dba@localhost; -- dba 可以查询 testdb 中的表。
      
      -- 作用在单个数据表上
      grant select, insert, update, delete on testdb.t_orders to dba@localhost;
      
      -- 作用在表中的列上
      grant select(id, username, sex) on testdb.t_user to dba@localhost;
      
    • 权限传播与收回

      -- 授权 dba 查询权限,并且可以将这些权限 grant 给其他用户
      grant select on testdb.* to dba@localhost with grant option;
      
      -- 收回 dba 和其传播用户的权限
      revoke select on testdb.* from dba@localhost cascade;
      

    Tips: 权限发生改变后, 需要重新加载一下权限,将权限信息从内存中写入数据库;



Reference

标签:REVOKE,GRANT,--,用户,testdb,user,MySQL,权限
来源: https://www.cnblogs.com/librarookie/p/16160252.html