前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL8.0角色管理---(一)

MySQL8.0角色管理---(一)

作者头像
AsiaYe
发布2020-02-25 15:22:06
5450
发布2020-02-25 15:22:06
举报
文章被收录于专栏:DBA随笔DBA随笔

//

MySQL8.0角色管理---(一)

//

今天看了看MySQL8.0官方文档的角色管理部分,写点东西总结下这块的内容吧。

01

啥是角色?

官方文档的第一句话,就开门见山的告诉了我们角色是什么东西。A MySQL role is a named collection of privileges. Like user accounts, roles can have privileges granted to and revoked from them.

不难看出,MySQL角色是"权限的集合",我们可以像账号那样,回收或者授予一个角色的权限。

我们可以将某个角色赋予某个用户,然后这个用户就拥有了这个角色下的所有权限,这种方法使得我们可以定义不同的角色来分配给不同的用户。例如我们可以定义"开发者角色","只读角色","读写角色"等等,不同的角色对应不同的权限。这样,对于开发人员张三、李四,我们只需要将"开发者角色"授予他们的个人账号即可,对于某些查询用户,只需要授予"只读角色",对于业务账号,要授予数据库的"读写角色"

02

角色支持的操作有哪些?

支持的操作,也就是角色的管理,下面是角色管理支持的语法:

1、CREATE ROLE和DROP ROLE创建和删除角色。

2、GRANT和REVOKE分配或回收用户帐户和角色的权限。

3、SHOW GRANTS显示用户帐户和角色的特权和角色分配。

4、SET DEFAULT ROLE指定默认情况下哪些帐户角色处于活动状态。

5、SET ROLE更改当前会话中的活动角色。

6、CURRENT_ROLE()函数显示当前会话中的活动角色。

7、当用户登录到服务器时,系统变量essentially_roles和activate_all_roles_on_login允许定义强制性角色和自动激活授予的角色。

光是罗列,不太容易理解,来看几个例子吧:

创建角色、删除角色:

代码语言:javascript
复制
mysql> create role "role_ro","role_rw","role_dev";
Query OK, 0 rows affected (0.07 sec)

mysql> create role "role_test"@"localhost";
Query OK, 0 rows affected (0.01 sec)

mysql> drop role "role_test"@"localhost";
Query OK, 0 rows affected (0.01 sec)

mysql> drop role "role_ro","role_rw","role_dev";
Query OK, 0 rows affected (0.00 sec)

分配权限给特定角色:

代码语言:javascript
复制
#创建两个角色,role_ro和role_rw
mysql> create role "role_ro","role_rw";
Query OK, 0 rows affected (0.00 sec)

#授予role_ro select权限,授予role_rw增删改查权限
mysql> grant select,show databases on yeyz.* to "role_ro";
Query OK, 0 rows affected (0.01 sec)

mysql> grant select,insert,update,delete,show databases on yeyz.* to "role_rw";
Query OK, 0 rows affected (0.01 sec)

#创建两个用户yeyz_ro和yeyz_rw
mysql> create user yeyz_ro@'%' identified by 'yeyz'; 
Query OK, 0 rows affected (0.01 sec)

mysql> create user yeyz_rw@'%' identified by 'yeyz';
Query OK, 0 rows affected (0.01 sec)

#将两个角色role_ro和role_rw,分别对应的映射到用户yeyz_ro和yeyz_rw上
mysql> grant 'role_ro' to yeyz_ro@'%';
Query OK, 0 rows affected (0.01 sec)

mysql> grant 'role_rw' to yeyz_rw@'%';
Query OK, 0 rows affected (0.00 sec)

分类好了权限,我们来对权限进行查看:

代码语言:javascript
复制
#查看账号权限,发现只能查看到角色和usage权限
mysql> show grants for yeyz_ro@'%';
+--------------------------------------+
| Grants for yeyz_ro@%                 |
+--------------------------------------+
| GRANT USAGE ON *.* TO `yeyz_ro`@`%`  |
| GRANT `role_ro`@`%` TO `yeyz_ro`@`%` |
+--------------------------------------+
2 rows in set (0.00 sec)

#使用using语法查看账号所拥有的的角色的权限
mysql> show grants for yeyz_ro@'%' using 'role_ro';
+----------------------------------------------+
| Grants for yeyz_ro@%                         |
+----------------------------------------------+
| GRANT SHOW DATABASES ON *.* TO `yeyz_ro`@`%` |
| GRANT SELECT ON `yeyz`.* TO `yeyz_ro`@`%`    |
| GRANT `role_ro`@`%` TO `yeyz_ro`@`%`         |
+----------------------------------------------+
3 rows in set (0.00 sec)

注意到,使用一般的show grants方法只能查看到账号拥有哪些角色,关于角色的具体权限,可以使用using的语法来进行查询。

这块儿的东西需要抽丝剥茧,一点一点来,时间原因,先到这里。未完,待续。。。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DBA随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档