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
相关产品推荐
相关产品推荐

