我有一个 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 是:GRANT ALL PRIVILEGES ON project_sck6jdyb.* TO '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 选项将 .* 上的所有权限授予
project
'project'@'localhost'GRANT ALL PRIVILEGES ON
project\_%
.* TO 'project'@'localhost' WITH GRANT OPTION