2010-01-26 8 views
1

Je fais de la gestion de serveur mysql avec un script qui vide les privilèges des utilisateurs MySQL quand de nouveaux privilèges sont ajoutés à un utilisateur MySQL.PHP/PDO - Privilège flush

J'utilise la classe PDO pour faire mes requêtes, mais quand je fais simple

FLUSH PRIVILEGES; 

je reçois, pour

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

et

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

SQLSTATE [42S02]: table de base ou vue introuvable: 1146 Table 'mysql.se rvers' n'existe pas

Est-il possible de faire une telle requête avec la classe AOP ou dois-je recourir à l'utilisation de MySQL (i)?

Répondre

2

J'ai juste essayé la partie du code suivant:

$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); 
} 

Et je ne reçois aucune sorte d'erreur comme celui que vous décrivez. Etes-vous sûr de ne pas avoir de problème avec votre serveur MySQL? Votre message d'erreur indique que la table "mysql.servers" n'existe pas ... Mais quand je regarde mon serveur MySQL local, il y a une telle table - êtes-vous sûr que votre installation/configuration n'est pas "cassée" et vous n'avez pas supprimé cette table ou quelque chose comme ça?


BTW, il ne semble pas être une sorte de privilège que vous n'êtes pas avoir: si vous essayez de flush privileges sans avoir le privilège nécessaire, vous obtenez l'erreur suivante: « SQLSTATE[42000]: Syntax error or access violation: 1227 Access denied; you need the RELOAD privilege for this operation »

+0

@Pascal MARTIN : Merci, j'avais en effet une installation mysql cassée, qui a été corrigée avec la commande mysql_fix_privilege_tables. – tomzx

+0

bon à savoir :-) Merci! –

Questions connexes