【问题标题】:DATABASE - Privilege for a user to be able to drop tables in a database but not the databaseDATABASE - 用户能够删除数据库中的表但不能删除数据库的权限
【发布时间】:2020-10-08 07:48:14
【问题描述】:

我正在建立一个用户有权访问数据库的数据库。问题是我希望这个用户拥有创建和删除表的权限,但他不应该有创建和删除数据库的能力,甚至是分配给他的数据库。

我在 MariaDB 和 MySQL 的文档中读到 DROP 权限适用于数据库、表和视图:

就我而言,我尝试了以下命令:

  • 创建数据库后,我将所有权限授予 MY_USER,这就是我看到用户可以在数据库上做任何他想做的事情(甚至删除它)的地方。 命令:
GRANT ALL PRIVILEGES ON "MY_DATABASE".* TO "MY_USER"@"localhost"; FLUSH PRIVILEGES;
  • 在那之后,我撤销了权限,我试图给 MY_USER 一些权限,但没有 DROP 权限,它的工作,用户不能删除数据库,但是在数据库中创建一个表后,他不能删除它。 命令:
REVOKE ALL PRIVILEGES ON "MY_DATABASE".* FROM "MY_USER"@"localhost"; FLUSH PRIVILEGES;
GRANT SELECT, INSERT, UPDATE, [...] ON `MY_DATABASE`.* TO `MY_USER`@`localhost`; FLUSH PRIVILEGES;

所以我想知道是否可以设置规则,或者数据库管理 Web 应用程序,类型 Adminer 或 PHPMyAdmin 是否允许我的用户创建和删除数据库中包含的表,但不能创建和删除数据库本身。

提前感谢您,祝您有美好的一天!

【问题讨论】:

  • 如果用户能够删除数据库中的所有表,那么他们不能删除数据库真的有意义吗?零表的数据库包含零有用数据。
  • @Damien_The_Unbeliever 我完全同意,如果用户可以选择从数据库中删除所有表,他们也可以删除数据库。现在的问题是,当且仅当原始数据库已被删除时,我希望该用户能够再次创建数据库。换句话说,只有当它的名称与原始数据库相同并且原始数据库已被删除时,用户才有可能创建单个数据库。

标签: mysql sql database shell mariadb


【解决方案1】:

不幸的是,这似乎是 MariaDB 中的一个突出错误,已被搁置了很长时间:https://jira.mariadb.org/browse/MDEV-13398

错误票证中提出的主要问题是确保与此问题的向后兼容性对于那些依赖 DROP 数据库的人来说是困难的。* 特权也能够删除架构。

【讨论】:

    猜你喜欢
    • 2015-09-22
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 2018-03-20
    • 2023-03-30
    • 2021-10-27
    相关资源
    最近更新 更多