我创建的用户 app_root 由具有有限权限的密码标识 . 此用户应该只能创建带前缀的数据库,创建新用户,并授予新用户访问数据库的权限 . 所以这就是我在做的事情 .
CREATE USER app_root@localhost IDENTIFIED BY 'password';
GRANT CREATE USER ON *.* TO app_root@localhost WITH GRANT OPTION;
GRANT CREATE ON `myapp\_%`.* TO app_root@localhost WITH GRANT OPTION;
FLUSH PRIVILEGES;
用户正式创建 . 现在我用app_root用户登录mysql并执行以下命令:
CREATE DATABASE test;
它按预期失败,因为数据库名称不包含myapp_前缀 .
CREATE DATABASE myapp_test;
CREATE USER myapp_test@localhost IDENTIFIED BY 'ABC';
数据库和用户都已成功创建 . 但是如果我执行grant语句,则会发生错误 .
GRANT ALL PRIVILEGES ON myapp_test.* TO myapp_test@localhost;
它会生成 ERROR 1044 (42000): Access denied for user 'app_root'@'localhost' to database 'myapp_test'
. 谁能告诉我我的做法有什么问题?
MySQL版本 - 服务器版本:5.5.37-0ubuntu0.14.04.1(Ubuntu)
编辑 - 按照建议,我将所有权限授予 app_root 用户 . 但它仍然没有改变任何东西 .
GRANT ALL ON `myapp\_%`.* TO app_root@localhost WITH GRANT OPTION;
FLUSH PRIVILEGES;