mysql Ver 8.4.5 for Linux 用caching_sha2_password无法获取代理用户权限问题?

新手上路,请多包涵

mysql Ver 8.4.5 for Linux on x86_64 (MySQL Community Server - GPL) 这个版本用caching_sha2_password这个身份插件的用户是不是不支持代理用户?如果支持需要怎么配置呢

我做到了这一步,一个账户用sha256_password插件设置密码,登陆进去获取到了代理用户权限,将这个账户的身份认证插件改成caching_sha2_password,登陆进去没有获得代理用户权限

阅读 256
1 个回答

使用 caching_sha2_password 身份验证插件的用户​​支持代理用户功能​​,但需要额外配置系统变量才能生效。

  • sha256_password 插件默认启用代理用户支持(无需额外配置)。
  • caching_sha2_password 插件需要手动启用系统变量 check_proxy_users 和 caching_sha2_password_auto_generate_rsa_keys(或类似插件相关变量)。

​​关键系统变量​​,若 check_proxy_users=OFF,代理权限对 caching_sha2_password 用户无效:

SHOW VARIABLES LIKE 'check_proxy_users';       -- 默认 OFF
SHOW VARIABLES LIKE 'caching_sha2_password_auto_generate_rsa_keys'; -- 默认 ON

1 启用代理用户检查
在 MySQL 配置文件 my.cnf 中(或运行时动态设置):

[mysqld]
check_proxy_users = ON          # 强制启用代理检查
caching_sha2_password_auto_generate_rsa_keys = ON  # 确保 RSA 密钥自动生成

重启 MySQL 服务或动态设置:
SET GLOBAL check_proxy_users = ON;

2 重新授予代理权限,修改插件后需重新授权(因用户认证方式变更):

-- 1. 撤销旧权限
REVOKE PROXY ON 'proxied_user'@'host' FROM 'proxy_user'@'host';

-- 2. 重新授予代理权限
GRANT PROXY ON 'proxied_user'@'host' TO 'proxy_user'@'host';
FLUSH PRIVILEGES;

3 验证代理权限

-- 检查代理权限是否生效
SHOW GRANTS FOR 'proxy_user'@'host';
-- 应返回:GRANT PROXY ON 'proxied_user'@'host' TO 'proxy_user'@'host'

完整配置示例

-- 创建被代理用户(权限实际持有者)
CREATE USER 'proxied_user'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
GRANT SELECT ON db.* TO 'proxied_user'@'localhost';

-- 创建代理用户(无需直接权限)
CREATE USER 'proxy_user'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';

-- 授予代理权限
GRANT PROXY ON 'proxied_user'@'localhost' TO 'proxy_user'@'localhost';

-- 启用全局代理检查(确保已持久化到配置)
SET GLOBAL check_proxy_users = ON;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题