PHP/PDO - сброс привилегий
Я делаю некоторое управление сервером mysql с помощью скрипта, который сбрасывает привилегии пользователей MySQL при добавлении новых привилегий пользователю MySQL.
Я использую класс PDO для выполнения своих запросов, но когда я делаю простой
FLUSH PRIVILEGES;
Я получаю, для
$connection->exec('FLUSH PRIVILEGES;');
а также
$connection->query('FLUSH PRIVILEGES;');
SQLSTATE[42S02]: Базовая таблица или представление не найдено: 1146 Таблица "mysql.servers" не существует
Можно ли сделать такой запрос с классом PDO, или я должен прибегнуть к использованию MySQL (I)?
1 ответ
Я только что попробовал следующую часть кода:
$dsn = 'mysql:dbname=mysql;host=127.0.0.1';
$user = 'root';
$password = '********';
try {
$db = new PDO($dsn, $user, $password);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->query('flush privileges;');
} catch (PDOException $e) {
var_dump($e);
}
И я не получаю никакой ошибки, как та, которую вы описываете.
Вы уверены, что у вас нет проблем с сервером MySQL?
Ваше сообщение об ошибке говорит, что таблица "mysql.servers
"не существует... Но когда я смотрю на свой локальный сервер MySQL, появляется такая таблица - вы уверены, что ваша установка / конфигурация не" сломана ", и вы не удалили эту таблицу или что-то в этом роде?
Кстати, это не та привилегия, которой у вас нет: если вы пытаетесь flush privileges
не имея требуемой привилегии, вы получаете следующую ошибку:SQLSTATE[42000]: Syntax error or access violation: 1227 Access denied; you need the RELOAD privilege for this operation
"