MySQL学习-权限管理(二)

90 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情

前言

上篇我们学习了MySQL中的权限管理。有兴趣的小伙伴可以阅读(# MySQL学习-权限管理(一))。
下面我们继续学习MySQL中的权限管理。

权限管理

授予权限

给用户授权的方式有2种,分别是通过把角色赋予用户给用户授权和直接给用户授权。

授权的语句:

GRANT 权限1,权限2,...权限n ON 数据库名称.表名称 TO 用户名@用户地址 [IDENTIFIED BY ‘密码口令’]

注意: 使用以上语句授予权限时,如果没有发现该用户,则会直接新建一个用户。

举例

授予用户yuanyuanlanlan数据库test下所有表的增删改查权限。

GRANT SELECT, INSERT, UPDATE, DELETE ON test.* TO yuanyuanlanlan@localhost;

实际开发中,可能需要根据用户的不同,对数据进行横向和纵向的分组:

  • 横向分组:指用户接触到数据的范围,比如可以看到哪些表的数据。
  • 纵向分组:指用户接触到的数据能访问到什么程度,比如是否可以增删改查。

查看权限

  • 查看当前用户的权限:
SHOW GRANTS;
SHOW GRANT FOR CURRENT_USER;
SHOW GRANTS FOR CURRENT_USER();
  • 查看某用户的全局的权限:
SHOW GRANTS FOR 'user'@'主机地址';

收回权限

收回权限就是取消已经赋予用户的某些权限。收回用户不必要的权限可以在一定程度上保证系统的安全性。MySQL中使用REVOKE语句来取消用户的某些权限。使用REVOKE收回权限后,用户账户的记录将从db,host,tables_priv和columns_priv表中删除,但是用户账户记录任然在user表中保存。如果需要删除user表中记录,需使用DROP USER语句。

注意: 在user表中删除用户之前,应该收回相应用户的所有权限。

收回权限的命令

REVOKE 权限1, 权限2,... 权限n, ON 数据库名称.表名称 FROM 用户名@用户地址;

举例

收回所有库表的权限

REVOKE ALL PRIVILEGES ON *.* FROM yuanyuanlanlan@'%';

修改权限需要用户在用户重新登陆后才生效。

今天先学习到这里,明天继续。