具有授予权限的用户无法为新用户和新数据库授予权限

具有授予权限的用户无法为新用户和新数据库授予权限

我正在使用:ubuntu 14.04.1 上的 mysql 5.5.43-0

我尝试创建一个新的管理员用户(admin),其可以执行以下操作:

  • 创建带有密码的新用户 (dbuser1) - (权限“创建用户”-> 有效)
  • b 为新创建的用户设置密码-(权限“在表 mysql.user 上插入/更新”->有效)
  • c 授予所有表使用权 - (GRANT USAGE ONTO'dbuser1'@'localhost' IDENTIFIED BY ...-> 有效)
  • d 创建新数据库(db4user1)-(权限“创建”->有效)
  • e 授予所有权限 — (GRANT ALL PRIVILEGES ON db4user1.* TO 'dbuser1'@'localhost';) — (授予管理员的权限 -> 不起作用)

我在步骤 e 中遇到了问题。

Mysql 显示以下错误:#1044 - 拒绝用户“admin”@“localhost”访问数据库“db4user1”

问题:我的管理员需要哪些额外的权限/特权来执行上述操作,仅此而已。

我认为我的管理员用户拥有向现有用户授予新创建的数据库的所有权限......

但它没有起作用。

感谢您的帮助

斯蒂芬

CREATE USER 'dbuser1'@'localhost' IDENTIFIED BY 'password1234'
SET PASSWORD FOR 'dbuser1'@'localhost' = PASSWORD('password5678')
GRANT USAGE ON *.* TO 'dbuser1'@'localhost' IDENTIFIED BY 'password5678' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
CREATE DATABASE IF NOT EXISTS `db4user1`; 
GRANT ALL PRIVILEGES ON `db4user1`.* TO 'dbuser1'@'localhost'; 

-> #1044 - 拒绝用户 'admin'@'localhost' 对数据库 'db4user1' 的访问

答案1

在我看来,您只想创建另一个像默认管理员这样的管理员root,因此您可以使用如下简单的语法:

GRANT ALL ON *.* TO admin@localhost IDENTIFIED BY 'passwd5678' WITH GRANT OPTION;

答案2

向给定用户(admin此处)提供足够的权限以便能够授予给定数据库(db4user1此处)上的所有权限的最低要求是:

GRANT DROP ,
REFERENCES ,
INDEX ,
ALTER ,
CREATE TEMPORARY TABLES ,
LOCK TABLES ,
CREATE VIEW ,
EVENT,
TRIGGER,
SHOW VIEW ,
CREATE ROUTINE,
ALTER ROUTINE,
EXECUTE ON  `db4user1` . * TO  'admin'@'localhost' WITH GRANT OPTION ;

几乎所有事...除了

  • Create(结构范围)
  • Select, Insert, Update, Delete(数据范围)

从这里开始,使用admin用户:

mysql> GRANT ALL PRIVILEGES ON db4user1.* TO 'dbuser1'@'localhost';
Query OK, 0 rows affected (0.00 sec)

我承认我没有找到任何关于此的文档。过去,我花了很多时间逐一排除法来测试所有可能性……

相关内容