2010-01-26 3 views
1

Я занимаюсь управлением сервером mysql со сценарием, который сбрасывает привилегии пользователей MySQL, когда новые пользователи добавляются к пользователю MySQL.PHP/PDO - привилегии Flush

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

FLUSH PRIVILEGES; 

я получаю, для

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

и

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

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

Можно ли сделать такой запрос с классом PDO или я должен прибегать к использованию MySQL (I)?

ответ

2

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

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

+0

@Pascal MARTIN : Спасибо, у меня действительно была сломанная установка mysql, которая была исправлена ​​с помощью команды mysql_fix_privilege_tables. – tomzx

+0

Полезно знать :-) Спасибо! –