MySQL - 错误1045 - 从shell拒绝访问

时间:2016-02-03 17:47:43

标签: php mysql

我有一个涉及数据库访问的php脚本。使用的凭据不是来自用户X.我从浏览器运行脚本,没问题。

但是当我从shell(或cron作业)运行时,我收到一个错误:

  

SQLSTATE [28000] [1045]拒绝访问用户' root' @' localhost' (使用密码:否)
  PHP注意:未定义的变量:conn in ....

如果我从shell运行,以用户X身份登录,则出现相同的错误。

脚本中出现问题的函数:

function get_data_from_db($sql){// 
    $hostdb=DB_HOST; //DB credentials are stored in php.ini, retrieved in another part of the script
    $namedb=DB_NAME;
    $userdb=DB_USER;
    $pwddb=DB_PASS;

    try {
        $conn = new PDO("mysql:host=$hostdb; dbname=$namedb;", $userdb, $pwddb);
        $conn->exec("SET CHARACTER SET utf8");      // Sets encoding UTF-8
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }   
    catch(PDOException $e) {
        echo $e->getMessage();
    }
    $statement = $conn->prepare($sql);
    $statement->execute();
    return $statement;   

}

我尝试使用root用户的凭据,同样的问题

下面,获取凭据的功能在从CLI运行时失败

function loadConfig( $myapp, $vars = array() ) {
    foreach( $vars as $v ) {
        define( $v, get_cfg_var( $myapp.".cfg.$v" ) );
    }
}

1 个答案:

答案 0 :(得分:0)

您需要将数据库凭据添加到CLI版本php.ini。它们目前仅在CGI或PHP-FPM版本中(以您的Web配置使用的为准)。