创建具有创建用户权限的用户

Cod*_*nja 5 mysql permissions users logins

对于我们的软件,我们需要一个能够创建其他 MySQL 用户的 MySQL 用户。这对于 MySQL root 用户是可能的,但我们不想在我们的软件应用程序中使用 root 用户。有没有办法创建一个可以创建其他用户的 MySQL 用户?

我在互联网上阅读了多个主题和页面,这些主题和页面说可以使用 GRANT OPTION。但是当我查看 MySQL 权限描述时,该权限是“GRANT OPTION 权限使您能够将您自己拥有的权限授予其他用户或从其他用户中删除。” 所以不提供创建用户的选项,只给他们你拥有的权限。

也许我理解错了,但我害怕在我们的服务器上做错事。这也是我提问的原因。

我希望有人可以向我解释是否可能以及如何创建具有我们所需权限的用户。

til*_*l_b 5

为了能够创建mysql用户,你需要能够插入到mysql数据库中的users表中。因此,创建您的主用户并授予他对 mysql 数据库的写访问权限。

文档说明(http://dev.mysql.com/doc/refman/5.7/en/create-user.html

要使用 CREATE USER,您必须具有 mysql 数据库的全局 CREATE USER 权限或 INSERT 权限。启用 read_only 系统变量时,CREATE USER 还需要 SUPER 权限。

所以这个过程会是这样的:

(root)> create user masteruser ...
(root)> grant CREATE_USER to masteruser ...
(masteruser)> create user foo1 ...
(masteruser)> create user foo2 ...
Run Code Online (Sandbox Code Playgroud)

此外,使用测试系统来测试此类行为被认为是一种很好的做法;这样当您搞砸时,不会对实际的真实数据库造成伤害。


bka*_*tar 5

您正在寻找的权限是CREATE USER权限。

GRANT CREATE_USER on [db].[table] to <user_who_will_have_that_privilege>@<host>
Run Code Online (Sandbox Code Playgroud)

示例

GRANT SELECT, CREATE USER on *.* to 'test'@'localhost';
Run Code Online (Sandbox Code Playgroud)

有关此特权的 MySQL 文档:

创建用户权限允许使用ALTER USERCREATE USERDROP USER重命名用户取消所有权限

ED?T :复制@til_b的答案,迟到 12 分钟

  • 当“WITH GRANT OPTION”用于创建一个名为 **John** 的用户时,John 还可以创建具有创建用户权限的用户。否则 John 可以创建用户,但无法授予他们创建用户的权限。 (2认同)