问题描述:
<?php
$link=mysql_connect("localhost","root","pass");
if(!$link) echo "没有连接成功!";
else echo "连接成功!";
?>
页面超时,显示
Warning: mysql_connect() [function.mysql-connect]: [2002] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试 (trying to connect via tcp://localhost:3306) in E:\appserv\www\yiyuan\codes\test.php on line 2
操作系统:win8
检查:
1.mysql正常启动,命令行可用,
2.用户密码没问题,命令行可正常操作数据库
3.php的mysql模块打开没问题
4.端口3306正常开启,mysql占用,没问题
。。。。。。。
解决:
多方百度后,试着将mysql_connect("localhost","root","pass"); 改为mysql_connect("127.0.0.1","root","pass"); 连接成功!
分析原因:
1.百度,说系统hosts文件未提供127.0.0.1到localhost的解析。找到C:\Windows\System32\drivers\etc\hosts文件,在文件末尾添加:127.0.0.1 localhost,如果已存在去掉其前面的“#”。
查看自己的文件发现不存在这个问题,127.0.0.1 localhost是打开的。
2.继续百度。mysql的localhost和127.0.0.1的区别:localhost走的是 unix sock,127.0.0.1走的是 tcp