データベースのセットを操作する Yii2 プロジェクトがあります。ユーザー認証データを保持する 1 つの基本的なデータベース接続と、各ユーザーに対して自動的に作成されたデータベースへの 2 番目の接続ポイントがあります。
プログラムでデータベースを作成する必要があります。そのため、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_sck6jdyb' へのユーザー 'project'@'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 OPTIONGRANT ALL PRIVILEGES ON
project
.* TO 'project'@'localhost'
project\_%
GRANT OPTION を使用して .* TO 'project'@'localhost' にすべての権限を付与する