MySQL 实战笔记 第01期:MySQL 角色管理

发布时间:2025-05-15 00:05:43 作者:益华网络 来源:undefined 浏览量(0) 点赞(1)
摘要:角色 ( Role ) 可以用来批量管理用户,同一个角色下的用户,拥有相同的权限。那 MySQL 数据库是否也有这样的功能呢 ?答案是肯定的。MySQL 5.7.X 可以通过 mysql.proxies_priv 来模拟角色 (Role) 的功能。下面让我们来实验一下(测试的版本 MySQL 5.7.28): 1 配置 proxymysql>show&

角色 ( Role ) 可以用来批量管理用户,同一个角色下的用户,拥有相同的权限。那 MySQL 数据库是否也有这样的功能呢 ?答案是肯定的。MySQL 5.7.X 可以通过 mysql.proxies_priv 来模拟角色 (Role) 的功能。下面让我们来实验一下(测试的版本 MySQL 5.7.28):

1 配置 proxy

mysql> show variables like "%proxy%"; #查看当前proxy是否开启,OFF 表示没有开启 +-----------------------------------+-------+ | Variable_name                     | Value | +-----------------------------------+-------+ | check_proxy_users                 | OFF   | | mysql_native_password_proxy_users | OFF   | | proxy_user                        |       | | sha256_password_proxy_users       | OFF   | +-----------------------------------+-------+ 4 rows in set (0.02 sec) mysql> set global check_proxy_users =on; Query OK, 0 rows affected (0.00 sec) mysql> set global mysql_native_password_proxy_users = on; Query OK, 0 rows affected (0.01 sec) mysql> exit

以上设置参数,对当前会话无效,需要退出后重新登录,或直接设置到 my.cnf 中去;

2 创建角色和用户

mysql>  create user role_dba; Query OK, 0 rows affected (1.03 sec) mysql> create user jack; Query OK, 0 rows affected (0.01 sec) mysql> create user mary; Query OK, 0 rows affected (0.01 sec)

用户为设置密码,如需密码可以使用 identified by #### 设置;

3 权限映射

将 role_dba 的权限映射( map )到 jack 、mary

mysql> grant proxy on role_dba to jack; Query OK, 0 rows affected (0.02 sec) mysql> grant proxy on role_dba to mary; Query OK, 0 rows affected (0.01 sec)

4 给用户赋权

给 role_dba 赋权(模拟 role 赋权)

mysql> grant select on *.* to role_dba; Query OK, 0 rows affected (0.01 sec) mysql> show grants for role_dba; +---------------------------------------+ | Grants for role_dba@%                 | +---------------------------------------+ | GRANT SELECT ON *.* TO role_dba@% | +---------------------------------------+ 1 row in set (0.00 sec) mysql> show grants for jack; +---------------------------------------------+ | Grants for jack@%                           | +---------------------------------------------+ | GRANT USAGE ON *.* TO jack@%            | | GRANT PROXY ON role_dba@% TO jack@% | +---------------------------------------------+ 2 rows in set (0.00 sec) mysql> show grants for mary; +---------------------------------------------+ | Grants for mary@%                           | +---------------------------------------------+ | GRANT USAGE ON *.* TO mary@%            | | GRANT PROXY ON role_dba@% TO mary@% | +---------------------------------------------+ 2 rows in set (0.00 sec)

5 查看 mysql.proxies_priv

mysql> select * from mysql.proxies_priv; +-----------+------+--------------+--------------+------------+----------------------+---------------------+ | Host      | User | Proxied_host | Proxied_user | With_grant | Grantor              | Timestamp           | +-----------+------+--------------+--------------+------------+----------------------+---------------------+ | localhost | root |              |              |          1 | boot@connecting host | 0000-00-00 00:00:00 | | %         | will | %            | will_dba     |          0 | root@localhost       | 0000-00-00 00:00:00 | | %         | tom  | %            | will_dba     |          0 | root@localhost       | 0000-00-00 00:00:00 | | %         | jack | %            | role_dba     |          0 | root@localhost       | 0000-00-00 00:00:00 | | %         | mary | %            | role_dba     |          0 | root@localhost       | 0000-00-00 00:00:00 | +-----------+------+--------------+--------------+------------+----------------------+---------------------+ 5 rows in set (0.01 sec)

6 验证

$ mysql -h 127.0.0.1 -u jack  Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 249 Server version: 5.7.28-log MySQL Community Server (GPL) Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type help; or \h for help. Type \c to clear the current input statement. mysql> select * from test.ssd limit 1; +---+------+------+ | a | b  | c  | +---+------+------+ | 1 | NULL | NULL | +---+------+------+ 1 row in set (0.01 sec)

mysql.proxies_priv 仅仅是对 Role 的模拟,和 Oracle 的角色还是有所不同的;官方称呼为 Role like。

MySQL 8.0 正式增加了 role 功能,有兴趣的同学可以自行了解。MySQL 5.6.X 模拟 Role 功能需要安装插件,具体方法可参考:https://dev.mysql.com/doc/refman/5.6/en/proxy-users.htmlhttps://dev.mysql.com/doc/refman/5.6/en/pluggable-authentication.html

二维码

扫一扫,关注我们

声明:本文由【益华网络】编辑上传发布,转载此文章须经作者同意,并请附上出处【益华网络】及本页链接。如内容、图片有任何版权问题,请联系我们进行处理。

感兴趣吗?

欢迎联系我们,我们愿意为您解答任何有关网站疑难问题!

您身边的【网站建设专家】

搜索千万次不如咨询1次

主营项目:网站建设,手机网站,响应式网站,SEO优化,小程序开发,公众号系统,软件开发等

立即咨询 15368564009
在线客服
嘿,我来帮您!