1

新しい権限がMySQLユーザーに追加されたときにMySQLユーザーの権限をフラッシュするスクリプトを使用して、mysqlサーバーの管理を行っています。

クエリを実行するために PDO クラスを使用していますが、単純な

FLUSH PRIVILEGES;

わかった

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

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

SQLSTATE [42S02]: ベース テーブルまたはビューが見つかりません: 1146 テーブル 'mysql.servers' が存在しません

PDO クラスでそのようなクエリを実行することは可能ですか、それとも mysql(i) を使用する必要がありますか?

4

1 に答える 1

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"

于 2010-01-26T18:12:47.730 に答える