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
работает под XAMPP
Windows. Это ошибка или я что-то делаю не так?
Обновить: 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
,
Попробуйте предоставить только те привилегии, которые у вас есть. Я ожидаю, что это будет работать.