用localhost不能连上mysql,但用127.0.0.1 localhost却可以,是什么原因

PHP中使用localhost连接Mysql不成功的解决方法
作者:琼台
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了PHP中使用localhost连接Mysql不成功的解决方法,但使用127.0.0.1则没有问题,本文也可以说是对连接MySQL主机使用127.0.0.1与localhost的区别的讲解,需要的朋友可以参考下
昨天在帮同事编译安装Linux环境时,遇到一个问题:
WEB服务器是apache,数据库是MySQL。
于是写了一个测试连接数据库的PHP页面:
代码如下:$mysql = mysql_connect('localhost','root','');
打开 http://localhost/test.php 测试
提示:Can't connect to local MySQL server through socket...
检查环境正常
以为是数据库没有启动,于是查看一下进程,MySQL在进程里,重启了一下MySQL.
使用mysql -u root -p 可以进入MySQL操作界面
直接使用/usr/local/php5/bin/php /web/test.php执行可以连上数据库
apache也重启了,一样无效
疑点:为何网页执行失败,命令执行却成功
这下就郁闷了,使用php命令直接执行就成功,通过网页执行就失败。难道是apache导致?网上搜索了大堆资料也没找到解决方案,重新编译安装apache问题依旧。
把localhost改成127.0.0.1成功
把localhost改成127.0.0.1后竟然连接成功了,开始陷入思考困局:localhost失败127.0.0.1却成功?
ping localhost 地址是127.0.0.1没错
打开hosts加入
127.0.0.1 qttc
使用qttc当主机连接也正常,唯独就不认localhost。
localhost连接方式不同导致
为了了解PHP连接数据库时,主机填写localhost与其它的区别阅读了大量资料,最后得知:
当主机填写为localhost时mysql会采用 unix domain socket连接
当主机填写为127.0.0.1时mysql会采用tcp方式连接
这是linux套接字网络的特性,win平台不会有这个问题
在my.cnf的[mysql]区段里添加
代码如下:protocol=tcp
保存重启MySQL,问题解决!
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具php 链接 mysql 数据库无法使用 localhost ,只能用 127.0.0.1_问答_ThinkSAAS
php 链接 mysql 数据库无法使用 localhost ,只能用 127.0.0.1
php 链接 mysql 数据库无法使用 localhost ,只能用 127.0.0.1
mac 下 php 链接 mysql 数据库,设置 mysql 地址时无法使用 localhost ,只能用 127.0.0.1。
php不会从hosts里查吗?
开发过程中推荐按照约定的接口格式先写死返回值,做到前后台进度分离,避免互相影响
可以是代码内部写死,也可以用fiddler之类的方案,也可以让后台想办法搭个不带逻辑的只会固定输出的环境等等
应该是服务端开启了调试,把调试工具的HTML代码显示出来了,服务器用的think php?
从图上看,应该是后端接口返回的问题。
Linux下使用localhost默认是使用sock连接,127.0.0.1则是使用tcp来连接
php.ini下有这样一个配置项:
mysql.default_socket =
试着改成对应的mysqld.sock文件,如:
mysql.default_socket = /var/run/mysqld/mysqld.sock
请记住这一条:对于mysql来说,localhost和127.0.0.1并不等价。
呐,黑锅不要扣给php,明明是mysql的问题。
select user, host from mysql.
添加你想要问的问题
PHP开发框架
开发工具/编程工具
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
让ThinkSAAS更好,把建议拿来。
开发客服微信

我要回帖

更多关于 localhost和127.0.01 的文章

 

随机推荐