0

データベースのセットを操作する 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権限を再確認しましたmysqluserまた、付与可能な権限と付与オプションがありinformation_schemeますが、それでもアクセスエラーが発生します。

SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1044 データベース 'project_sck6jdyb' へのユーザー 'project'@'localhost' のアクセスが拒否されました。

MySQL version is 5.6.21XAMPP、 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

GRANT ALL PRIVILEGES ON project.* TO 'project'@'localhost'

project\_%GRANT OPTION を使用して .* TO 'project'@'localhost' にすべての権限を付与する

4

1 に答える 1

0

権限を付与するには、GRANT_OPTION 権限を持っている必要があり、付与する権限も持っている必要があります。あなたの投稿から、あなたには次の権限があります: INSERT, CREATE, DROP, RELOAD, INDEX, ALTER, SUPER, CREATE USER.

自分が持っている権限のみを付与してみてください。これでうまくいくと思います。

于 2015-12-10T16:43:22.203 に答える