【问题标题】:Why are not working my roles in my MySQL database?为什么不在我的 MySQL 数据库中工作?
【发布时间】:2021-02-15 14:17:56
【问题描述】:

我目前正在学习 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”的数据库。有什么问题吗,谢谢。

【问题讨论】:

  • 你还有用户test_reader_user@%吗?来自 localhost 的用户和来自任何 IP 地址的用户是不同的用户,可能拥有不同的权限。以测试用户身份登录后尝试SELECT USER();
  • 查询显示“test_read_user@localhost”,我没有使用类似名称创建任何其他用户。有什么方法可以查看实际权限,而不仅仅是检索角色名称?

标签: mysql phpmyadmin roles privileges


【解决方案1】:

我也发现了这个问题。我按照这些文档运行 sql set default role <role_name> for <user> 来修复它

【讨论】:

    猜你喜欢
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 2020-06-04
    相关资源
    最近更新 更多