mysqli :: __ construct():(HY000/1045):拒绝用户'lfc_site'@'localhost'的访问(使用密码:YES)
问题描述:
我正在将我的主机平台从cPanel切换到Plesk,似乎遇到了一些问题在我的一个网站上有一个脚本。主站点运行在最新版本的Joomla上,并且使其数据库连接没有错误。我有一个外部脚本,我在cron作业上运行,但似乎没有连接。我得到这个错误:mysqli :: __ construct():(HY000/1045):拒绝用户'lfc_site'@'localhost'的访问(使用密码:YES)
mysqli::__construct(): (HY000/1045): Access denied for user 'lfc_site'@'localhost' (using password: YES)
我必须假设它与我的连接类这样做,我将它张贴在这里:
-
我有一个包含数据库登录一个cofig.ini证书。
[数据库] 用户名= database_user 密码= ****** 数据库名=数据库名称
然后我的连接类是这样的:
<?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脚本似乎使用完全相同的凭据连接没有问题?
答
你是什么意思的“外部脚本”?
通过您给出的输出我假设它位于与Joomla安装相同的机器上。
这个问题很可能不在于您的凭据(如果它们适用于Joomla并且已经对其进行了双重检查),而是使用您提供的主机名或服务器配置或MariaDB用户(lfc_site)权限。
您可以尝试将代码中的localhost
更改为127.0.0.1
并查看它是否有任何区别。
如果没有,请ssh到你的服务器,并提供
-
plesk db
输出,然后SELECT user, host FROM mysql.user WHERE user = 'lfc_site';
- 和
grep bind /etc/mysql/my.cnf
作进一步调查。