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 回答