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