黑脸艺术家 发表于 2023-5-19 17:18:52

MySQL角色未生效??

步骤如下:
1.使用SQL语句,将teach角色分配给teacher用户:

GRANT 'teach'@'localhost' TO 'teacher'@'localhost';

2.使用SQL语句,激活teacher用户的teach角色:

SET DEFAULT ROLE 'teach'@'localhost' TO 'teacher'@'localhost';

3.使用SQL语句,查询teacher用户当前活跃的角色情况:

SELECT CURRENT_ROLE();

前两步运行成功无出错,
到第三步显示运行成功,但结果输出显示“当前活跃的角色情况CURRENT_ROLE”为:NONE
这个意思就是角色无生效,是不是角色授予不成功呢?得如何修改?
网上查阅说在“GRANT ROLE”的时候要授权:WITH ADMIN OPTION,我加进去后结果显示与前者一样是:NONE。
谢谢!!

isdkz 发表于 2023-5-19 17:19:26

可能是因为你的MySQL版本不支持“SET DEFAULT ROLE”语句。你可以尝试使用以下语句来激活角色:

SET ROLE 'teach'@'localhost' FOR 'teacher'@'localhost';

如果这个语句也不起作用,你可以尝试使用以下语句来查询角色:

SELECT * FROM INFORMATION_SCHEMA.APPLICABLE_ROLES WHERE USER='teacher' AND HOST='localhost';

这将返回一个包含所有适用于该用户的角色的列表。如果你看到了你想要的角色,请使用以下语句来激活它:

SET ROLE '角色名'@'localhost' FOR 'teacher'@'localhost';

如果你仍然无法解决问题,可能需要检查你的角色授权是否正确,或者尝试在MySQL 8.0或更高版本中运行你的代码。

黑脸艺术家 发表于 2023-5-19 18:06:19

isdkz 发表于 2023-5-19 17:19
可能是因为你的MySQL版本不支持“SET DEFAULT ROLE”语句。你可以尝试使用以下语句来激活角色:

SET ROLE...

用“SELECT * FROM INFORMATION_SCHEMA.APPLICABLE_ROLES WHERE USER='teacher' AND HOST='localhost';”查询角色查不到我创建的角色teach,但前面显示我创建成功。真是奇怪。我的MySQL版本是8.0,而且我试了一下输入你第一句“SET ROLE 'teach'@'localhost' FOR 'teacher'@'localhost';”在FOR这里报错了噢。

以下是我创建角色teach的步骤:
CREATE ROLE 'teach'@'localhost';//创建角色
GRANT SELECT,UPDATE(nor,tex)
ON 实验二.学生成绩表
TO 'teach'@'localhost';   //为teach角色授予库“实验二”中“学生成绩表”的平时分数nor和考试成绩tex查询数据、修改数据的权限。
GRANT 'teach'@'localhost' TO 'teacher'@'localhost';//将teach角色分配给teacher用户
SET DEFAULT ROLE 'teach'@'localhost' TO 'teacher'@'localhost';//激活teacher用户的teach角色
SELECT CURRENT_ROLE();//查询teacher用户当前活跃的角色情况,查不到。。。TnT

可以帮我看一下哪里出现错误吗?谢谢啦
页: [1]
查看完整版本: MySQL角色未生效??