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

MariaDB问题:创建角色后无法生效且无法授权求助

MariaDB角色可见性与权限授权问题解决方案

1. 角色在information_schema.APPLICABLE_ROLES不显示的处理

information_schema.APPLICABLE_ROLES仅展示当前会话已激活的适用角色,非root@localhost用户创建角色后需手动激活:

  • 会话级激活:执行 SET ROLE role_test;
  • 永久激活(下次登录自动生效):执行 SET DEFAULT ROLE role_test FOR '你的创建用户'@'localhost';

mysql.roles_mapping是静态存储角色元数据的系统表,只要角色创建成功就会存在,和APPLICABLE_ROLES的动态展示逻辑不同。

2. 非root用户无法授予角色的解决

即便用户拥有全局权限,创建角色后默认不会获得该角色的管理权限,需显式授予:

GRANT role_test TO '你的创建用户'@'localhost' WITH ADMIN OPTION;
FLUSH PRIVILEGES;

执行后该用户即可将role_test授予其他账户。

3. msc_dev用户授权失败的排查与修复

给msc_dev授予role_msc_cus带WITH ADMIN OPTION后仍报错,按以下步骤排查:

  • 先激活角色:切换到msc_dev用户后执行 SET ROLE role_msc_cus;
  • 修正授权语句格式:原语句中用户格式错误,正确写法为:
    GRANT role_msc_cus TO 'x2'@'x2.com' WITH ADMIN OPTION;
    
    (注意:用户名和主机需分开,'x2@x2.com'@'localhost'是错误格式)
  • 刷新权限并重新登录:执行 FLUSH PRIVILEGES; 后退出msc_dev再重新登录尝试

核心要点

  • root@localhost因拥有全局所有权限,创建角色后自动获得该角色的管理权限,无需额外操作
  • 普通用户创建角色后,必须显式通过GRANT ... WITH ADMIN OPTION获得角色管理权限,才能将角色授予他人
  • APPLICABLE_ROLES的展示完全依赖当前会话的角色激活状态,未激活的角色不会出现在该视图中

内容的提问来源于stack exchange,提问作者Jörg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 08:55:01