MySQL授予权限访问拒绝
我有一个Yii2项目,它运行一些数据库。 它有一个基本的数据库连接,我保留用户认证数据,并为每个用户自动创建数据库的第二个连接点。
我必须以编程方式创建数据库; 所以,我有一个用户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。*上的所有特权到'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 *.* TO'project'@'localhost'IDENTIFIED BY PASSWORD'* [secret]'WITH GRANT OPTION
在project授予所有特权*到'项目'@'localhost'
授予project_%所有特权project_% 。*到'项目'@'localhost'WITH GRANT OPTION
要授予权限,您必须具有GRANT_OPTION权限,并且还必须拥有要授予的权限。 从您的帖子中,您拥有以下权限: INSERT, CREATE, DROP, RELOAD, INDEX, ALTER, SUPER, CREATE USER 。
尝试仅授予您拥有的权限。 我期望这会起作用。
链接地址: http://www.djcxy.com/p/69279.html