mysql_connect("localhost", "root", "root") 报错 Database Server Password Error。mysql -uroot -proot 却能正常登录。C:\Windows\System32\drivers\etc\hosts 文件。hosts 文件内容:
127.0.0.1 www.111cn.net
缺少 localhost 解析行。MySQL PHP 驱动解析 localhost 时,会尝试连接 Unix Socket(Linux)或 Named Pipe/Shared Memory(Windows)。若解析异常,可能回退 TCP 连接 127.0.0.1:3306,但主机名解析错误导致连接被拦截或路由至错误地址。
127.0.0.1 localhost
::1 localhost
保存后无需重启,PHP 脚本即刻恢复正常。
mysql_connect("127.0.0.1", "root", "root") -- 绕过主机名解析
localhost 解析优先级:hosts → DNS → NetBIOS → LLMNR。localhost 有特殊处理:尝试本地协议(Pipe/Socket),失败才走 TCP。127.0.0.1 强制走 TCP。skip_name_resolve=OFF(默认)。hosts 含 127.0.0.1 localhost 及 ::1 localhost。bind-address=0.0.0.0 或 127.0.0.1。telnet 127.0.0.1 3306 测试 TCP 连通性。mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT) 看详细异常。