【问题标题】:Is there a specific MySQL grant permission to allow user to create and drop other users?是否有特定的 MySQL 授予权限以允许用户创建和删除其他用户?
【发布时间】:2016-06-25 22:50:15
【问题描述】:

我正在查看 MySQL 文档以获取有关如何授予用户创建和删除其他用户的能力的信息。给出的示例用于创建和删除数据库和表。

分配给用户的 GRANT ALL PRIVILEGES 权限是否也暗示他们可以创建和删除其他用户?如果是这样,是否有任何其他 GRANT 特权允许这样做而不自动使用户成为超级用户?或者该过程是否会首先使他们成为超级用户,然后撤销特定权限?

【问题讨论】:

  • 有一个CREATE USER 权限。查看详情here in the MySQL documentation
  • 谢谢,但 CREATE USER 是创建用户的命令,而不是分配给用户的特权/权限。我正在寻找一种方法来授予新创建的用户或现有用户创建其他用户的权限。
  • 来自文档:“CREATE USER 权限允许使用 ALTER USER、CREATE USER、DROP USER、RENAME USER 和 REVOKE ALL PRIVILEGES。”。因此,请阅读ALTER USER 部分以了解正确的语法。一旦用户拥有该权限,他就可以按所述创建、更改、删​​除和重命名用户。不要忘记FLUSH PRIVILEGES。至少 root 具有开箱即用的特权。您可以使用该用户将其提供给另一个用户,依此类推。
  • 啊,好的。所以,如果我要创建一个新用户,它只是GRANT 部分的一部分:CREATE USER '<user>'@'%' IDENTIFIED BY '<password>' GRANT CREATE USER ON testdb.* TO '<user>'@'%'。谢谢,有道理。

标签: mysql user-permissions


【解决方案1】:

要使用 DROP USER,您必须拥有 mysql 数据库的全局 CREATE USER 权限或 DELETE 权限。

http://dev.mysql.com/doc/refman/5.7/en/drop-user.html

要使用第一个 REVOKE 语法,您必须拥有 GRANT OPTION 权限,并且您必须拥有要撤销的权限。

http://dev.mysql.com/doc/refman/5.7/en/revoke.html

GRANT OPTION 权限不属于GRANT ALL PRIVILEGES ...。它必须在GRANT 语句的末尾指定,... WITH GRANT OPTION。此特权允许拥有它的用户将其拥有的任何特权授予其他用户。或者撤销它们。 (如上所述,您不能授予您自己缺乏的特权……或撤销一项特权。)

【讨论】:

  • 感谢您的澄清。我正在开发一种工具,它结合了 PostgreSQL 和 MySQL 功能,并且仍在学习各自的特点。 PostgreSQL 在授予权限方面似乎要简单得多。我开始明白为什么这么多人喜欢 PostgreSQL。
  • MySQL 在很大程度上是进化的产物,而 PostgreSQL 可以说是经过深思熟虑设计的产物。使用 Postgres 需要注意的是狂热的粉丝。 MySQL 是一个优秀的平台,MariaDB 和 Percona 的创新做出了重大贡献。
猜你喜欢
  • 2021-02-25
  • 1970-01-01
  • 2014-07-04
  • 2019-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-22
  • 2020-10-23
相关资源
最近更新 更多