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


MySQL - error 1045 - Access denied from shell

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

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

SQLSTATE[28000] [1045] 用户"root"@"localhost"的访问被拒绝(使用密码:否)
PHP 注意:未定义的变量:连接在....

如果我从 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;   

}

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

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

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

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