我想拥有一个非root用户的mysql用户,该用户可以创建另一个数据库和用户,并向该用户授予对创建数据库的访问权限。要以 root 身份执行此操作,我首先创建了一个用户
CREATE USER asusi_admin@localhost IDENTIFIED BY '123';
然后我将创建用户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'
在这里我得到一个错误:'拒绝用户'asusi_admin'@'localhost'访问数据库'asusi_superdb'
我应该以根身份重新登录,并明确授予 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数据库的访问权限。可能是我错过了一些东西,还是设计了这种行为?