【发布时间】:2016-03-16 02:57:10
【问题描述】:
我有一个 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 OPTION将
project.* 上的所有权限授予'project'@'localhost'使用授予选项将
project\_%.* 上的所有权限授予“项目”@“本地主机”
【问题讨论】:
-
能否请add
SHOW GRANTS for project回答您的问题? -
@VolkerK 当然,感谢您的建议
标签: php mysql yii2 yii2-user-roles