【问题标题】:mysqli::__construct(): (HY000/1045): Access denied for user 'lfc_site'@'localhost' (using password: YES)mysqli::__construct(): (HY000/1045): Access denied for user 'lfc_site'@'localhost' (使用密码: YES)
【发布时间】:2018-04-24 06:29:52
【问题描述】:

我正在将我的托管平台从 cPanel 切换到 Plesk,并且我的一个网站上的脚本似乎存在一些问题。主站点在最新版本的 Joomla 上运行,并使其与数据库连接没有错误。我有一个在 cron 作业上运行的外部脚本,但似乎没有连接。我收到此错误:

mysqli::__construct(): (HY000/1045): Access denied for user 'lfc_site'@'localhost' (using password: YES)

我必须假设它与我的连接类有关,所以我将在此处发布:

  1. 我有一个包含数据库登录凭据的 cofig.ini。

    [数据库] 用户名 = 数据库用户 密码 = ****** dbname = 数据库名称

那么我的连接类是这样的:

<?php
//Database connection class
class Db {
  protected static $connection;
  public function connect() {    
    if(!isset(self::$connection)) {
      global $config;
      self::$connection = new mysqli('localhost:3306',$config['username'],$config['password'],$config['dbname']);
    }
    if(self::$connection === false) {
      return false;
    }
    return self::$connection;
  }
  public function query($query) {
    $connection = $this -> connect();
    $result = $connection -> query($query);
    return $result;
  }
  public function select($query) {
    $rows = array();
    $result = $this -> query($query);
    if($result === false) {
        return false;
    }
    while ($row = $result -> fetch_assoc()) {
        $rows[] = $row;
    }
    return $rows;
  }
  public function error() {
    $connection = $this -> connect();
    return $connection -> error;
  }
  public function quote($value) {
    $connection = $this -> connect();
    return "'" . $connection -> real_escape_string($value) . "'";
  }
}
?>

然后最后我的脚本运行查询......

<?php
require_once('/var/www/vhosts/user/httpdocs/db.php');
$config = parse_ini_file('/var/www/vhosts/user/httpdocs/config.ini');

$db = new Db();
$rows = $db -> select('
    SELECT * 
    FROM milestones 
    WHERE status != "arrived" 
    AND departure_time BETWEEN (NOW() - INTERVAL 12 HOUR) 
    AND (NOW() + INTERVAL 12 HOUR) 
    AND type = "4"
');

?>

我猜可能有一个模块未启用,它禁止此脚本正确建立连接,正如我所说,Joomla 脚本似乎使用完全相同的凭据连接没有问题?

【问题讨论】:

    标签: php mysql centos mariadb plesk


    【解决方案1】:

    “外部脚本”是什么意思?

    根据您提供的输出,我假设它与 Joomla 安装位于同一台机器上。

    问题很可能不在于您的凭据(如果它们适用于 Joomla 并且您已经仔细检查过),而在于您提供的主机名或服务器配置或 MariaDB 用户 (lfc_site) 权限。

    您可以尝试将代码中的localhost 更改为127.0.0.1,看看是否有任何不同。

    如果没有,请通过 SSH 连接到您的服务器并提供输出

    1. plesk db 然后SELECT user, host FROM mysql.user WHERE user = 'lfc_site';
    2. grep bind /etc/mysql/my.cnf

    供进一步调查。

    【讨论】:

      猜你喜欢
      • 2019-11-29
      • 2019-06-05
      • 2020-12-18
      • 2019-06-26
      • 2020-03-26
      • 2021-03-04
      • 2017-08-10
      • 2023-03-23
      • 2021-12-27
      相关资源
      最近更新 更多