PHP / PDO - сброс привилегий - PullRequest
       12

PHP / PDO - сброс привилегий

1 голос
/ 26 января 2010

Я управляю сервером MySQL с помощью скрипта, который сбрасывает привилегии пользователей MySQL при добавлении новых привилегий пользователю MySQL.

Я использую класс PDO для выполнения своих запросов, но когда я делаю простой

FLUSH PRIVILEGES;

Я получаю, за

$connection->exec('FLUSH PRIVILEGES;');

и

$connection->query('FLUSH PRIVILEGES;');

SQLSTATE [42S02]: базовая таблица или представление не найдено: 1146 Таблица «mysql.servers» не существует

Можно ли выполнить такой запрос с помощью класса PDO или мне нужно прибегнуть к использованию mysql (i)?

1 Ответ

2 голосов
/ 26 января 2010

Я только что попробовал следующую часть кода:

$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"

...