mysql:具有授予选项和通配符的数据库特定用户权限委托
Posted
技术标签:
【中文标题】mysql:具有授予选项和通配符的数据库特定用户权限委托【英文标题】:mysql: database specific user permission delegation with grant option and wildcard 【发布时间】:2018-08-01 14:55:59 【问题描述】:我希望有一个非 root mysql 用户,该用户可以创建另一个数据库和用户,并授予该用户对已创建数据库的访问权限。为此,我以 root 身份首先创建了一个用户
CREATE USER asusi_admin@localhost IDENTIFIED BY '123';
然后我将 create user PRIVILEGE 授予该用户
GRANT CREATE USER ON *.* TO 'asusi_admin'@localhost';
然后我为这个用户授予他创建的每个数据库的所有权限
GRANT ALL PRIVILEGES ON `asusi\_%`.* TO 'asusi_admin'@'localhost WITH GRANT OPTION;
现在我正在刷新权限
FLUSH PRIVILEGES;
现在我以新创建的用户 asusi_admin 身份登录 MySQL 并创建一个新数据库
现在我正在创建一个新数据库
CREATE DATABASE asusi_database;
现在我正在检查我是否可以使用这个数据库
USE asusi_database;
我可以使用这个数据库,很好
现在我正在创建一个新用户
CREATE USER 'asusi_user'@'localhost' IDENTIFIED '123';
现在我想授予创建的用户选择权限
GRANT select on `asusi_database`.* 'asusi_user'@'localhost'
在这里我收到一个错误:'Access denied for user 'asusi_admin'@'localhost' to database 'asusi_superdb'
我是否应该以 root 身份重新登录并明确授予 asusi_user
对此数据库的访问权限GRANT ALL PRIVILEGES ON `asusi_database`.* TO 'asusi_admin'@'localhost WITH GRANT OPTION;
然后以 asusi_admin 身份重新登录并再次运行命令
GRANT select on `asusi_database`.* 'asusi_user'@'localhost'
这次它没有给我任何错误,用户 asusi_user 可以读取数据库 asusi_database。显然 MySQL 希望我通过 root 帐户为每个创建的数据库显式授予用户 asusi_admin 的访问权限。但我不想使用 root 帐户。我以为执行完这个命令后
GRANT ALL PRIVILEGES ON `asusi\_%`.* TO 'asusi_admin'@'localhost WITH GRANT OPTION;
用户 asusi_admin 将能够授予其他用户访问以“asusi_”为前缀的 ecery 数据库的权限。可能是我错过了什么,或者这种行为就是这样设计的?
【问题讨论】:
【参考方案1】:似乎这是一个已确认的错误,尚未修复 https://bugs.mysql.com/bug.php?id=75097,因此您现在无能为力。
【讨论】:
以上是关于mysql:具有授予选项和通配符的数据库特定用户权限委托的主要内容,如果未能解决你的问题,请参考以下文章