我正在使用一个脚本来管理mysql服务器,该脚本在向MySQL用户添加新权限时刷新MySQL用户的权限。
我使用PDO类来执行我的查询,但是当我做一个简单的
FLUSH PRIVILEGES;我得到了,因为
$connection->exec('FLUSH PRIVILEGES;');和
$connection->query('FLUSH PRIVILEGES;');SQLSTATE42S02:基本表或视图未找到: 1146表'mysql.servers‘不存在
是否可以使用PDO类进行这样的查询,还是必须使用mysql(i)?
发布于 2010-01-26 18:12:47
我刚刚尝试了以下部分代码:
$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“
https://stackoverflow.com/questions/2140849
复制相似问题