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

XAMPP环境PDO连接MariaDB报SQLSTATE[HY000][2054]错误求解决方案

问题根因说明
  • 端口占用提示异常:仅修改了MySQL服务的监听端口,未同步修改XAMPP控制面板的端口检测规则,控制面板默认仍检测3306端口状态,因此会弹出占用提示,不影响MySQL实际运行在3308端口
  • PDO 2054报错:XAMPP搭载的10.4.8-MariaDB默认使用ed25519作为用户认证插件,PHP 7.3的PDO扩展不支持该插件,此前修改密码的语句未指定兼容旧版的认证插件,因此PDO连接时会提示认证方法未知。此前执行带WITH mysql_native_password的语句报错,是因为该语法是MySQL专属,MariaDB不兼容该写法。
解决方案

1. 消除3306端口占用提示

  • 打开XAMPP控制面板,点击右上角「Config」按钮
  • 选择「Service and Port Settings」,切换到MySQL标签页
  • 将默认主端口从3306修改为实际使用的3308,保存设置后重启XAMPP控制面板即可

2. 修复PDO连接报错

第一步:执行MariaDB兼容的修改用户认证插件语句,在phpMyAdmin中运行以下SQL:

ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('你的root账号密码');
FLUSH PRIVILEGES;

第二步:修改PDO连接字符串,明确指定XAMPP MySQL的使用端口3308,示例代码如下:

try {
    $pdo = new PDO('mysql:host=localhost;port=3308;dbname=替换为你的数据库名;charset=utf8mb4', 'root', '替换为你的root密码');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

配置完成后重启XAMPP的MySQL服务即可正常连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:42:02