MySql5.7角色管理
mysql5.7:proxies_priv(模拟角色
),可以实现用户组的管理。
角色(role
)可以批量管理
用户,同一个角色下面的数据都有相同的权限
。
mysql5.7是通过mysql.proxies_priv
来模拟
实现角色管理的。
配置模拟角色
mysql.proxies_priv
仅仅是对Role
的模拟
。
https://www.cnblogs.com/imweihao/p/7197619.html
1.打开proxy功能
-- 查看是否打开proxy功能
show variables like '%proxy_users%';
-- 临时开启
set global check_proxy_users=on;
-- 临时开启
set global mysql_native_password_proxy_users=on;
持久化配置
# 启用代理用户名称验证,确保它们对应于现有的 MySQL 用户。
## 如果设置为 "off",则可以使用任何字符串作为代理用户名称,即使它不对应于实际的 MySQL 用户。
check_proxy_users=on
# 要求代理用户使用 mysql_native_password 插件进行身份验证。
## 只有使用该插件进行身份验证的代理用户才能连接到 MySQL 服务器。如果您没有特定需要允许代理用户使用其他插件进行身份验证,则应将此参数设置为 "off"。
msyql_native-password_proxy_users=on
2.创建用户
注意,角色(role)用户也是用户.
-- 创建it_dba角色用户
create user 'it_dba';
-- 创建it1用户
create user 'itl';
-- 创建it2用户
create user 'it2'
-- 创建it3用户
create user 'it3'
3.映射用户权限
将角色(role)用户
的权限授权
到it1,it2后,it1和it2的权限将和it_dba一样。
-- 将it_dba角色用户的权限映射到it1 it2
grant proxy on 角色名 to 用户名;
grant proxy on it_dba to it1;
grant proxy on it_dba to it2;
权限映射示例
-- 授予accounting账号在本地主机上与任何主机连接的任何用户使用代理的特权。代理用户指定为空字符串('')。
GRANT PROXY ON accounting@localhost TO ' '@'%';
-- 返回与当前用户相关的三个系统变量。
-- USER()返回服务器当前认证的用户的用户名和主机名。
-- CURRENT_USER()返回服务器用于认证客户端的当前用户的用户名和主机名。
-- CURRENT_USER()的权限是真正当前作用的用户权限
-- @@proxy_user返回通过代理用户调用当前连接的用户的用户名和主机名。
SELECT USER(), CURRENT_USER(), @@proxy_user;
4.给it_dba角色用户授予权限
-- 给it_dba授予实际的权限
-- 授予指定库名的所有表的SELECT权限
grant SELECT on 指定库名.* to it_dba;
-- 保存权限配置
flush privileges;
5.检查权限
-- 查看it_dba模拟角色的权限
show grant for it_dba;
-- 查看it用户的权限
show grant for it1;
show grant for it2;
show grant for it3;
-- 查看授权用户代理的信息
SELECT * FROM mysql.'proxies_priv';