You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Amazon AWS RDS MySQL 8.0.13角色权限未继承问题排查

问题分析与解决方案

这个问题其实是MySQL 8.0角色机制的一个常见坑——授予用户角色后,角色不会自动成为用户的默认激活角色,导致用户登录后角色权限并未生效,只有基础的USAGE权限,所以会提示访问被拒绝。

具体原因

你已经完成了角色创建、权限分配和角色授予的全流程,但MySQL 8.0默认要求用户显式激活角色,或者将角色设置为用户的默认角色,否则登录后角色的权限不会自动加载。从你提供的SHOW GRANTS结果也能看出来:dev3的权限记录里只有授予角色的条目,但没有角色对应的实际数据库权限,本质是角色处于未激活状态。

解决方法

有两种方式可以快速解决这个问题:

1. 设置角色为用户的默认角色(推荐)

执行这条命令,让dev3每次登录后自动激活TEST_ROLE:

ALTER USER 'dev3'@'%' DEFAULT ROLE TEST_ROLE;
FLUSH PRIVILEGES;

之后用dev3重新登录数据库,就能直接访问test_data库了。

2. 用户登录后手动激活角色

如果只是临时需要使用角色权限,可以在dev3登录后执行:

SET ROLE TEST_ROLE;

执行后角色权限会立即生效,此时再访问test_data就正常了。

验证结果

设置默认角色后,用dev3登录并执行SHOW GRANTS;,你会看到输出里已经包含角色对应的实际权限:

GRANT USAGE ON *.* TO `dev3`@`%`
GRANT ALL PRIVILEGES ON `test_data`.* TO `dev3`@`%`
GRANT `TEST_ROLE`@`%` TO `dev3`@`%`

这说明角色权限已经成功加载。

内容的提问来源于stack exchange,提问作者Mike de H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:52:16