我将托管平台从cPanel切换到Plesk,似乎在我的某个网站上遇到了一些脚本问题。主站点运行在最新版本的Joomla上,并使其数据库连接没有错误。我有一个外部脚本,我在一个cron作业上运行,但似乎没有连接。我收到这个错误:
mysqli::__construct(): (HY000/1045): Access denied for user 'lfc_site'@'localhost' (using password: YES)
我必须假设它与我的连接类有关,所以我将在此处发布:
我有一个包含数据库登录凭据的cofig.ini。
[数据库] username = database_user 密码= ****** dbname = database_name
然后我的连接类是这样的:
<?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脚本似乎使用完全相同的凭据连接而没有问题?
答案 0 :(得分:0)
你的意思是&#34;外部脚本&#34;?
根据你给出的输出我假设它与Joomla安装位于同一台机器上。
问题很可能不在于您的凭据(如果它们适用于Joomla并且您已经仔细检查过它们),而是使用您提供的主机名或服务器配置或MariaDB用户(lfc_site)权限。
您可以尝试将代码中的127.0.0.1
更改为plesk db
,看看它是否有所不同。
如果没有,请通过SSH连接到您的服务器并提供输出
SELECT user, host FROM mysql.user WHERE user = 'lfc_site';
然后grep bind /etc/mysql/my.cnf
Index data1 data2 data3
0 x0 x0 x0
1 x1 x1 x1
2 x2 x2 x2
...
n xn xn xn
进一步调查。