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

PDO连接MySQL报错2005:未知服务器主机'127.0.0.1:3306'求助

解决PDO连接MySQL时的"Unknown MySQL server host"错误

嘿,我一眼就看出问题所在了——这个报错是因为你在PDO的DSN连接字符串里,把主机地址和端口的写法搞错了。不是直接把端口拼在IP后面,而是得用单独的;port=参数来指定端口。

先看你出错的核心代码段:

$dbh = new PDO('mysql:host='.$db['host'].':'.$db['port'].';dbname='.$db['db'].'', $db['user'], $db['pass']);

这里你把127.0.0.1和3306拼成了127.0.0.1:3306作为host的值,PDO会把整个字符串当作主机名去解析,自然找不到对应的MySQL服务器,所以抛出了Unknown MySQL server host的错误。

修正后的完整代码

把端口从host字段里分离出来,用标准的port参数单独指定:

error_reporting(E_ALL);
ini_set('display_errors', 1);

/* Database Setting */
$db['host'] = '127.0.0.1'; //Mysql's Host
$db['port'] = '3306'; //Mysql's port
$db['user'] = "root"; //Mysql's user
$db['pass'] = 'pass'; //Mysql's password
$db['db'] = "db"; //Mysql's database

// 正确的DSN写法:用;port=单独指定端口
$dbh = new PDO(
    'mysql:host='.$db['host'].';port='.$db['port'].';dbname='.$db['db'],
    $db['user'],
    $db['pass']
);

补充说明

你提到用localhost时没出这个错,是因为当使用localhost作为主机名时,MySQL客户端默认会用套接字(socket)方式连接,而非TCP/IP,所以即使端口写法有误也不会触发这个错误;但用127.0.0.1会强制走TCP/IP连接,端口写法的问题就立刻暴露了。另外也可以确认下你的MySQL服务确实在3306端口运行,本地防火墙没有阻止这个端口的TCP连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:55:27