MySQL访问权限管理(grant、revoke)
发布日期:2021-06-29 22:33:17 浏览次数:2 分类:技术文章

本文共 1389 字,大约阅读时间需要 4 分钟。

一、查看用户账号权限(show grant)

  • 例如:下面是查看root用户的相关权限
show grants for root;

  • 例如:下面是查看一个新创建还没有分配权限的名为“bforta”用户的权限信息。其中“USAGE ON *.*”的USAGE表示没有权限

二、添加/设置用户权限(grant)

  • 可以使用grant语句来给用户添加/设置权限。参数说明:
    • privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
    • databasename:数据库名
    • tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*
    • WITH GRANT OPTION:一些其他选项
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
  • 例如:下面给bforta用户授予crashcourse数据库上所有表的select权限(只可读)
grant select on crashcourse.* to bforta;
  • 例如:下面给replication用户授予所有权限,并且任何地址登录为replication用户都可以使用
grant all privileges on *.* to replication@'%' identified by '123456' with grant option;
  •  例如:下面与上面一样,只不过限定了只有192.168.0.101地址连接进来的replication用户才可以拥有这些权限
grant all privileges on *.* to replication@'192.168.0.101' identified by '123456' with grant option;
  • 在复制的文章中有授权演示案例,请参阅: 

“未来的授权”的概念

  • 在使用grant和revoke时,用户账号必须存在,但是所指示的数据库或表可以不存在,这允许管理员在创建数据库和表之前设计和实现安全错误
  • 这样做的副作用是:当某个数据库或表被删除时(用drop语句),相关的访问权限仍然存在。而且,如果将来重新创建该数据库或表,这些权限仍然存在

简化多次授权

  • 可通过列出个权限并用逗号分隔,将多条grant语句串在一起
  • 如下所示,将select和insert权限同时赋予给bforta用户:
grant select,insert on crashcourse.* to bforta;

三、移除用户权限(revoke)

  • revoke用来移除用户的权限(注意:被撤销的权限必须存在,否则会出错)
  • 例如:下面移除bforta用户在crashcourse数据库上的select权限
revoke select on crashcourse.* from bforta;

四、访问权限层次

  • grant和revoke可在下面几个层次上控制访问权限:
    • 整个服务器,使用grant all和revoke all
    • 整个数据库,使用on database.*
    • 特定的表,使用on databases.table
    • 特定的列
    • 特定的存储过程

五、权限总结

  • 可以授予和撤销的每个权限如下:

 

转载地址:https://dongshao.blog.csdn.net/article/details/104055973 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Linux(内核剖析):28---内核同步之(临界区、竞争条件、同步、锁、常见的内核并发、SMNP和UP配置选项、锁的争用和扩展性(锁粒度))
下一篇:MySQL数据类型——数字类型(整型、浮点型、BIT型)

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月07日 18时47分36秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章