MySQL学习-角色管理(一)

172 阅读2分钟

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

前言

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

角色管理

为什么有角色,目的是为了方便管理拥有相同权限的用户。恰当的权限设定,可以确保数据的安全性。

创建角色

创建角色使用CREATE ROLE语句。语法如下:

CREATE ROLE 'role_name'[@'host_name'] [,'role_name'[@'host_name']]...

角色名称的命名规则和用户名类似。其中host_name省略,默认为%,role_name不可以省略,不可以为空。

创建一个管理员角色:

CREATE ROLE 'manager'@'localhost';

给角色赋予权限

创建角色后,默认这个角色没有任何权限,我们需要给角色授权。语法如下:

GRANT provoleges ON table_name TO 'role_name'[@'host_name'];

举例一

给管理员授予商品信息表的只读权限。

GRANT SELECT ON demo.goodsmaster TO 'manager';

查看角色的权限

给角色赋予权限后,可以通过SHOW GRANTS语句,来查看权限是否创建成功。

SHOW GRANTS FOR 'manager';

使用以上语句,可以查看以下结果:

GRANTS FOR manager@%
GRANT USAGE ON . TO 'manager'@'%'
GRANT USAGE ON 'demo'.'goodsmaster' TO 'manager'@'%'

其中第二行结果,就是我们刚刚给角色manager赋予的权限,也就是对商品信息表的只读权限。除了我们赋予的权限,从结果中可以看出还有一个权限,这是在创建一个角色时,系统会默认给赋予一个USAGE权限,意思是连接登录数据库的权限。

回收角色的权限

角色授权后,可以对角色的权限进行维护。对权限进行添加或撤销。添加权限使用GRANT语句,与角色授权相同。撤销角色或角色权限使用REVOKE语句。语法如下:

REVOKE privileges ON tablename FROM 'rolename';

举例二

撤销manager的商品信息表的只读权限。

REVOKE SELECT ON demo.goodsmaster FROM 'manager';

删除角色

删除角色的语法如下:

DROP ROLE role1 [,role2]...

如果删除了一个角色,那么用户也就失去了通过这个角色获得的所有权限。

举例三

删除角色manager。

DROP ROLE 'manager';

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