【问题标题】:PHP/PDO - Flush privilegesPHP/PDO - 刷新权限
【发布时间】:2010-01-26 16:36:03
【问题描述】:

我正在使用一个脚本进行一些 mysql 服务器管理,该脚本在向 MySQL 用户添加新权限时刷新 MySQL 用户权限。

我正在使用 PDO 类来做我的查询,但是当我做一个简单的时候

FLUSH PRIVILEGES;

我明白了,因为

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

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

SQLSTATE[42S02]:基表或视图 未找到:1146 表 'mysql.servers' 不存在

是否可以使用 PDO 类进行此类查询,还是必须求助于 mysql(i)?

【问题讨论】:

    标签: php mysql pdo mysqli mysql-error-1146


    【解决方案1】:

    我刚刚尝试了以下代码部分:

    $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

    【讨论】:

    • @Pascal MARTIN:谢谢,我确实安装了损坏的 mysql,已使用 mysql_fix_privilege_tables 命令修复。
    猜你喜欢
    • 1970-01-01
    • 2017-07-05
    • 2016-04-13
    • 1970-01-01
    • 2015-10-20
    • 2016-11-09
    • 2014-03-12
    • 2011-11-21
    • 1970-01-01
    相关资源
    最近更新 更多