当组织事情有助于简化生活。
在前一篇文章,我们开始探索与静态动态权限和互动的。我们也看到了如何从一个DBA帐户删除超级特权。
我们所做的是减法。但在现实生活中,我们应该表现不同。我们应该只有真正需要的是什么帐户添加到正常工作。
添加权限,并为每个用户是有问题他们可能的交互,也容易产生错误。
相反,我们可以使用角色组,分配和撤销正确的特权更容易的方式。
这是在MySQL的出现变得更重要的动态权限。
我们应该正确地使用角色吗?首先设计。
第一步是确定的角色,在这个过程中我们需要保持一个基本的原则,使它简单,因此让我们尽量避免太多的角色,或与太多的跨职能权限的角色。
我的建议:
- DBA(主数据库谁能做)
- MaintenanceAdmin(DBAminions they can perform only some action on the server, and server only)
- UserAdmin(可以创建用户分配拨款等等)
- raybet雷竞技竞猜在线官网MonitorUser(从performance_schema看到所有过程和阅读)
- DBManager(可以添加/删除/修改/表/模式触发/视图/程序等)
- DBDesigner(可以修改特定对象主要是明确鉴定模式/表)
- ReplicationAdmin(可以添加/修改/删除启动/停止复制也GR)
- BackupAdmin(可以备份,不能恢复)
我们有八个管理角色,他们应该覆盖所有我们需要管理任务。
现在让我们创建:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
创建
角色
“DBA”,
“MaintenanceAdmin”,
“UserAdmin”,
“raybet雷竞技竞猜在线官网MonitorUser”,
“DBManager”,
“DBDesigner”,
“ReplicationAdmin”,
“BackupAdmin”
DC2- - - - - -1 ((电子邮件保护))(mysql)>
选择
用户,主机
从
mysql。用户
在哪里
account_locked=“Y”
和
password_expired =“Y”
命令
1;
+ - - - - - - - - - - - - - - - - - - - - - - - - + +
|
用户
|
主机
|
+ - - - - - - - - - - - - - - - - - - - - - - - - + +
|BackupAdmin|%|
|DBA|%|
|DBDesigner|%|
|DBManager|%|
|MaintenanceAdmin|%|
|raybet雷竞技竞猜在线官网MonitorUser|%|
|ReplicationAdmin|%|
|UserAdmin|%|
+ - - - - - - - - - - - - - - - - - - - - - - - - + +
8
行
在
集
(0.00sec)
|
让我们检查一个接一个的角色,看看我们需要分配权限。
我们的测试用户没有任何格兰特:
DBA
好吧,你可能会说. .容易格兰特。
错了!如已经在前一篇文章中指出,这样做也会分配超级,弃用从MySQL 8.0.x。让我们从右脚开始,只添加我们需要:
|
1
2
3
|
格兰特
选择,
插入,
更新,
删除,
创建,
下降,
重新加载,
关闭,
过程,
文件,
引用,
指数,
改变,
显示
数据库,
创建
临时
表,
锁表,
执行,
复制
奴隶,
复制
客户端,
创建
视图,
显示
视图,
创建
常规,
改变
常规,
创建用户,
事件,
触发,
创建
表空间,
创建
的角色,
下降
角色
在
* . *
来
'管理员' @ ' % '
使用GRANT选项;
格兰特
APPLICATION_PASSWORD_ADMIN、AUDIT_ADMIN BACKUP_ADMIN、BINLOG_ADMIN BINLOG_ENCRYPTION_ADMIN, CLONE_ADMIN, CONNECTION_ADMIN, ENCRYPTION_KEY_ADMIN, FLUSH_OPTIMIZER_COSTS, FLUSH_STATUS, FLUSH_TABLES, FLUSH_USER_RESOURCES, GROUP_REPLICATION_ADMIN, INNODB_REDO_LOG_ARCHIVE, INNODB_REDO_LOG_ENABLE, PERSIST_RO_VARIABLES_ADMIN, REPLICATION_APPLIER, REPLICATION_SLAVE_ADMIN, RESOURCE_GROUP_ADMIN, RESOURCE_GROUP_USER, ROLE_ADMIN, SERVICE_CONNECTION_ADMIN, SESSION_VARIABLES_ADMIN, SET_USER_ID, SHOW_ROUTINE,SYSTEM_USER,TABLE_ENCRYPTION_ADMIN SYSTEM_VARIABLES_ADMIN XA_RECOVER_ADMIN
在
* . *
来
'管理员' @ ' % '
使用GRANT选项;
|
格兰特应该一模一样但是没有超级。
将角色分配给我们的测试用户:
|
1
|
格兰特
'管理员' @ ' % '
来
“secure_test”@“localhost”
|
现在我们的用户有:
|
1
2
3
4
5
|
* * * * * * * * * * * * * * * * * * * * * * * * * * *1。
行
* * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * *2。
行
* * * * * * * * * * * * * * * * * * * * * * * * * * *
|
正确的你现在看到DBA格兰特但这不是活跃:
激活一个角色你需要明确:
|
1
|
|
并让用户重新连接!
一旦激活作用我们还可以使用:
|
1
|
显示
奖助金
为
current_user()\ G
|
检查哪些特权现在积极为一个特定的用户。
我们也可以控制哪些角色是用户查询表mysql.default_roles活跃。
把积极的作用:
|
1
|
|
不管怎样,现在我们有DBA角色可供所有DBA和如果我们需要改变一些我们能做的只是在这个角色,而不是每一个用户。
MaintenanceAdmin
|
1
2
3
|
格兰特
事件,
锁表,
重新加载,
选择,
显示
数据库,
重新加载,
关闭
在
* . *
来
“MaintenanceAdmin”@“%”;
格兰特
BINLOG_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,GROUP_REPLICATION_ADMIN,REPLICATION_SLAVE_ADMIN,SESSION_VARIABLES_ADMIN,SET_USER_ID,SYSTEM_VARIABLES_ADMIN
在
* . *
来
“MaintenanceAdmin”@“%”;
格兰特
“MaintenanceAdmin”@“%”
来
“secure_test”@“localhost”;
|
UserAdmin
|
1
2
3
|
格兰特
创建用户,
GRANT选项,
重新加载,
显示
数据库
在
* . *
来
“UserAdmin”@“%”;
格兰特
ROLE_ADMIN
在
* . *
来
“UserAdmin”@“%”;
格兰特
“UserAdmin”@“%”
来
“secure_test”@“localhost”;
|
raybet雷竞技竞猜在线官网MonitorUser
|
1
2
3
|
格兰特
过程,
复制
客户端
在
* . *
来
“raybet雷竞技竞猜在线官网MonitorUser”@“%”;
格兰特
选择
在
performance_schema。*
来
“raybet雷竞技竞猜在线官网MonitorUser”@“%”;
格兰特
“raybet雷竞技竞猜在线官网MonitorUser”@“%”
来
“secure_test”@“localhost”;
|
DBManager
|
1
2
3
|
格兰特
改变,
改变
常规,
创建,
创建
常规,
创建
表空间,
创建
临时
表,
创建
视图,
删除,
下降,
下降
的角色,
事件,
指数,
插入,
锁表,
重新加载,
选择,
显示
数据库,
显示
视图,
触发,
更新
在
* . *
来
“DBManager”@“%”;
格兰特
SET_USER_ID,SHOW_ROUTINE
在
* . *
来
“DBManager”@“%”;
格兰特
“DBManager”@“%”
来
“secure_test”@“localhost”;
|
DBDesigner
|
1
2
|
格兰特
改变,
改变
常规,
创建,
创建
常规,
创建
视图,
指数,
选择,
显示
数据库,
显示
视图,
触发
在
* . *
来
“DBDesigner”@“%”;
格兰特
“DBDesigner”@“%”
来
“secure_test”@“localhost”;
|
ReplicationAdmin
|
1
2
3
4
5
|
格兰特
复制
客户端
在
* . *
来
“ReplicationAdmin”@“%”;
格兰特
REPLICATION_APPLIER,REPLICATION_SLAVE_ADMIN,GROUP_REPLICATION_ADMIN,SERVICE_CONNECTION_ADMIN
在
* . *
来
“ReplicationAdmin”@“%”;
格兰特
选择
在
performance_schema。*
来
“ReplicationAdmin”@“%”;
格兰特
选择
在
mysql . *
来
“ReplicationAdmin”@“%”;
格兰特
“ReplicationAdmin”@“%”
来
“secure_test”@“localhost”;
|
BackupAdmin
|
1
2
3
|
格兰特
事件,
锁表,
选择,
显示
数据库
在
* . *
来
“BackupAdmin”@“%”;
格兰特
BACKUP_ADMIN
在
* . *
来
“BackupAdmin”@“%”;
格兰特
“BackupAdmin”@“%”
来
“secure_test”@“localhost”;
|
一旦所有我们的角色,我们可以测试它们。例如,我们可以检查ReplicationAdmin检查我们组二进制日志和停止/启动复制(或正常复制):
如果创建并分配角色并不活跃。现在让我们为用户启用角色:
|
1
|
|
记得重新连接!
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20.
21
22
23
24
25
26
27
28
29日
30.
31日
32
|
+ - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - +
|Log_name|File_size|加密|
+ - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - +
|
binlog.000011|113802321|
没有
|
|
binlog.000012|19278年|
没有
|
+ - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - +
2
行
在
集
(0.00sec)
查询好吧,0
行
影响(5.25sec)
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - +
|CHANNEL_NAME|MEMBER_ID|MEMBER_HOST|MEMBER_PORT|MEMBER_STATE|MEMBER_ROLE|MEMBER_VERSION|
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - +
|group_replication_applier|7 fddf04f- - - - - -9797年- - - - - -11 eb- - - - - -a193- - - - - -08002734 ed50|gr5|3306年|离线|||
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - +
1
行
在
集
(0.00sec)
查询好吧,0
行
影响(3.70sec)
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - +
|CHANNEL_NAME|MEMBER_ID|MEMBER_HOST|MEMBER_PORT|MEMBER_STATE|MEMBER_ROLE|MEMBER_VERSION|
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - +
|group_replication_applier|79年ede65d- - - - - -9797年- - - - - -11 eb- - - - - -9963年- - - - - -08002734 ed50|gr4“|3306年|在线|
主
|8.0.23|
|group_replication_applier|7 e214802- - - - - -9797年- - - - - -11 eb- - - - - -a0cf- - - - - -08002734 ed50|gr6|3306年|在线|二次|8.0.23|
|group_replication_applier|7 fddf04f- - - - - -9797年- - - - - -11 eb- - - - - -a193- - - - - -08002734 ed50|gr5|3306年|在线|二次|8.0.23|
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - +
3
行
在
集
(0.01sec)
|
这些是活跃的特权:
|
1
2
3
4
5
6
7
8
9
10
11
12
|
* * * * * * * * * * * * * * * * * * * * * * * * * * *1。
行
* * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * *2。
行
* * * * * * * * * * * * * * * * * * * * * * * * * * *
奖助金
为
(电子邮件保护):
格兰特
GROUP_REPLICATION_ADMIN、REPLICATION_APPLIER REPLICATION_SLAVE_ADMIN SERVICE_CONNECTION_ADMIN
在
* . *
来
“secure_test”@“localhost”
* * * * * * * * * * * * * * * * * * * * * * * * * * *3所示。
行
* * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * *4所示。
行
* * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * *5。
行
* * * * * * * * * * * * * * * * * * * * * * * * * * *
奖助金
为
(电子邮件保护):
格兰特
“BackupAdmin”@“%”,“DBA”@“%”,“DBDesigner”@“%”,“DBManager”@“%”,“MaintenanceAdmin”@“%”,“raybet雷竞技竞猜在线官网MonitorUser”@“%”,“ReplicationAdmin”@“%”,“UserAdmin”@“%”
来
“secure_test”@“localhost”
5
行
在
集
(0.00sec)
|
结论
使用角色可以让我们在一个地方修改所需的特权,同时将使我们能够控制可能扩散的动态权限由于使用组件或插件,大大减少拥有多个权限来源的复杂性。
角色通常用于最常见的数据库和MySQL实现他们很晚了。但使用角色是自然进化的我们应该如何处理用户授予从小型中型/大型平台。
我们分配单独的用户权限的时候走了,欢迎来到2021 MySQLers !
为了你的方便,我分发一个简单SQL与所有命令创建文件在本文中描述的角色。
引用
https://dev.mysql.com/doc/refman/8.0/en/roles.html
雷竞技下载官网MySQL Percona分布是最完整的,稳定的,可伸缩的,和安全,开源MySQL解决方案,提供企业级的数据库环境最关键业务应用程序…和它的免费使用!





