我目前正在学习 MySQL 中的用户权限和角色。目前,我正在学习如何创建自定义角色,向他们授予权限,最后创建一些用户只是为了测试这个新角色。问题是,我不知道为什么,但是即使角色已正确分配给用户,当我使用它们登录时,我看不到任何架构,就像我没有任何权限一样。我正在使用的脚本是下一个:
创建新角色:
CREATE ROLE 'read_db';
要在“bdatosventas”数据库中设置权限:
GRANT SELECT ON bdatosventas.* TO 'read_db';
创建新用户:
CREATE USER 'test_read_user'@'localhost' IDENTIFIED BY 'somepassword';
为此新用户设置角色:
GRANT 'read_db' TO 'test_read_user'@'localhost';
通过以下方式验证权限:
SHOW GRANTS FOR 'test_read_user'@'localhost';
作为输出,我得到:
GRANT `read_db` TO `test_read_user`@`localhost`
GRANT USAGE ON *.* TO `test_read_user`@`localhost`...
终于好啦:
FLUSH PRIVILEGES;
所以我猜这个角色分配正确并且应该可以工作。 但是当我使用该新用户进入 phpMyAdmin 时,它没有向我显示任何模式,看不到我的数据库“bdatosventas”,只有一个名为“information_schema”的数据库。有什么问题吗?谢谢。
我也发现这个问题了。我通过按照这些文档运行 sql
set default role <role_name> to <user>
来修复它:
好的,这就是为我解决的问题。
创建角色、授予角色权限、创建用户然后将用户成员身份分配给角色后,重要的一步是激活角色:
SET ROLE ALL;