You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP应用通过Plesk服务器连接MySQL时触发1045权限错误

解决Plesk服务器上PHP连接MySQL的1045权限错误

问题根源

错误SQLSTATE[HY000] [1045] Access denied for user 'TESTE'@'localhost'的核心矛盾:代码指定了公网IP作为数据库主机,但MySQL识别到的请求来源是localhost。这通常和Plesk环境下的数据库用户权限配置、本地连接规则有关。

分步解决方案

1. 检查数据库用户的访问权限

在Plesk面板操作:

  • 进入目标数据库teste_whats的管理界面,找到用户teste
  • 查看允许访问的主机设置:
    • 若应用和数据库在同一服务器,需确保用户teste允许从localhost或127.0.0.1访问
    • 若应用在外部服务器,需将允许访问的主机设为%(允许所有IP)或应用所在服务器的具体IP
  • 确认用户teste@localhost(或对应允许的主机)存在,且密码与代码中一致

2. 调整数据库连接参数

如果应用和数据库部署在同一Plesk服务器,直接将DBHOST改为localhost或127.0.0.1,这是Plesk环境下本地数据库连接的标准方式:

const DBCONNECTION = 'mysql';
const DBHOST = 'localhost'; // 或127.0.0.1
const DBNAME = 'teste_whats';
const DBUSER = 'teste';
const DBPASS = 'teste';

$connPdo = new \PDO(DBCONNECTION.': host='.DBHOST.'; dbname='.DBNAME, DBUSER, DBPASS);

3. 验证Plesk数据库状态

  • 确认teste_whats数据库状态正常,未被Plesk锁定
  • 核对数据库用户teste的密码,注意MySQL用户名和密码默认区分大小写

4. 调试连接的辅助脚本

在服务器上创建测试脚本,输出完整错误信息,帮助定位问题:

try {
    const DBCONNECTION = 'mysql';
    const DBHOST = '112.115.225.365';
    const DBNAME = 'teste_whats';
    const DBUSER = 'teste';
    const DBPASS = 'teste';

    $connPdo = new \PDO(DBCONNECTION.': host='.DBHOST.'; dbname='.DBNAME, DBUSER, DBPASS);
    $connPdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
    echo "数据库连接成功";
} catch (\PDOException $e) {
    echo "错误详情: " . $e->getMessage();
}

内容的提问来源于stack exchange,提问作者Kadu Lopes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 06:43:21