[英]MySQL grant privileges access denial
我有一个Yii2项目,该项目操作一些数据库。 它有一个基本的数据库连接,用于保存用户身份验证数据,第二个连接指向为每个用户自动创建的数据库。
我必须以编程方式创建数据库; 因此,我有一个用户project
,该project\\_%
在project\\_%
。*上具有全局授予特权和通配符特权。 我就是做这个的:
$queries = [
"CREATE DATABASE ".$dbname,
"FLUSH PRIVILEGES",
"CREATE USER '{$dbuser}'@'localhost' IDENTIFIED BY '{$dbpass}'",
"GRANT ALL PRIVILEGES ON {$dbname}.* TO '{$dbuser}'@'localhost'"
];
foreach($queries as $q) $application->db->createCommand($q)->execute();
$dbname is 'project_'.randomString(8).
我仔细检查了所有project
权限,检查了mysql
。 user
和information_scheme
也是,我具有可授予的特权和授予选项,但仍然出现访问错误:
SQLSTATE [42000]:语法错误或访问冲突:1044用户'project'@'localhost'对数据库'project_sck6jdyb'的访问被拒绝正在执行的SQL是:在project_sck6jdyb上授予GRANT ALL PRIVILEGESES。*到'pu_sck6jDyB'@'localhost'。
MySQL version is 5.6.21
,在XAMPP
和Windows下运行。 那是一个错误,还是我做错了什么?
更新: SHOW GRANTS for project@localhost;
GRANT INSERT,CREATE,DROP,RELOAD,INDEX,ALTER,SUPER,CREATE USER ON
*.*
到GRANT OPTION通过密码'* [secret]'标识的'project'@'localhost'将所有特权授予
project
。*至'project'@'localhost'将所有特权授予
project\\_%
。*到GRANT OPTION的'project'@'localhost'
要授予特权,您必须具有GRANT_OPTION特权,并且还必须具有要授予的特权。 在您的帖子中,您具有以下特权: INSERT, CREATE, DROP, RELOAD, INDEX, ALTER, SUPER, CREATE USER
。
尝试仅授予您所拥有的特权。 我希望这会起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.