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。
谢谢!! 可能是因为你的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或更高版本中运行你的代码。 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]