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-запрос: GRANT ALL PRIVILEGES ON project_sck6jdyb.* TO 'pu_sck6jDyB'@'localhost'.

MySQL version is 5.6.21работает под XAMPPWindows. Это ошибка или я что-то делаю не так?

Обновить: SHOW GRANTS for project@localhost;

GRANT INSERT, CREATE, DROP, RELOAD, INDEX, ALTER, SUPER, CREATE USER ON *.* TO 'project'@'localhost', ОПРЕДЕЛЯЕМЫЙ ПАРОЛЕМ * *[secret]'С ГРАНТОВЫМ ВАРИАНТОМ

ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА project.* TO 'project'@'localhost'

ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА project\_%.* TO 'project'@'localhost' С ГРАНТОВЫМ ВАРИАНТОМ

1 ответ

Чтобы предоставить привилегии, у вас должна быть привилегия GRANT_OPTION, а также у вас должна быть привилегия, которую вы хотите предоставить. Из вашего поста у вас есть следующие привилегии: INSERT, CREATE, DROP, RELOAD, INDEX, ALTER, SUPER, CREATE USER,

Попробуйте предоставить только те привилегии, которые у вас есть. Я ожидаю, что это будет работать.

Другие вопросы по тегам