我在php MySQL中有一个奇怪的问题:
php与127.0.0.1
连接,但不与localhost
连接。
如何解决这个问题?
答案 0 :(得分:8)
在命令行中尝试ping localhost
,它可能会解析为::1:
IP6,相当于127.0.0.1
要修复它,请添加(或取消注释)该行:
127.0.0.1 localhost
C:\WINDOWS\system32\drivers\etc\hosts
中的
答案 1 :(得分:5)
localhost必须在您的hosts文件中定义,默认情况下在Windows和大多数操作系统上都是如此。
检查以下文本文件,看看是什么:
C:\WINDOWS\system32\drivers\etc\hosts
请注意“hosts”是文件,没有扩展名,它不是文件夹。这个文件应该是空的,如果你看到你的AV /垃圾邮件阻止程序添加了大量指向127.0.0.1的条目或者讨厌的恶意软件已经写入垃圾,尽管新条目低于旧条目。 Localhost应该是该文件中的第一个条目。
答案 2 :(得分:3)
对于mac,这是解决方案:
在MAC上使用localhost而不是127.0.0.1连接到MySQL。很长一段时间以来,我一直在使用127.0.0.1在我的开发平台上连接MySQL,因为出于某种原因,localhost无法正常工作。原来是因为127.0.0.1使用TCP / IP而localhost使用套接字。 php.ini文件指向mysql.sock的错误位置所以你所要做的就是更改它,重新启动apache并瞧!
Open php.ini: /private/etc/php.ini
Find the following line: mysql.default_socket = /var/mysql/mysql.sock
Replace with: mysql.default_socket = /tmp/mysql.sock
Restart apache: apachectl restart
注意:根据您的设置,您可能还需要在php.ini中更新这些行:
mysqli.default_socket = /tmp/mysql.sock
pdo_mysql.default_socket = /tmp/mysql.sock
注意:如果您没有php.ini文件,则需要复制提供的名为php.ini.default的默认值
sudo cp /private/etc/php.ini.default /private/etc/php.ini
通过http://madproject.com/general/connect-to-mysql-using-localhost-instead-of-127-0-0-1-on-a-mac/
答案 3 :(得分:2)
另请查看定义用户访问权限的mysql数据库。您可以定义允许给定用户连接的源主机。您可以参考http://dev.mysql.com/doc/refman/5.1/en/connection-access.html了解更多详情
答案 4 :(得分:2)
我记得这是Windows上Mysql的长期记录功能。关于本地套接字工作方式的东西。
答案 5 :(得分:1)
尝试:
IE - >工具 - >选项 - >连接 - > LAN设置检查绕过代理服务器以获取本地地址
答案 6 :(得分:1)
如果MySQL连接到127.0.0.1,它通过TCP / IP连接,而如果连接到localhost则通过套接字连接到。 PHP正在寻找适合mysql.sock的地方吗?确保php.ini和my.conf具有匹配的位置
答案 7 :(得分:0)
localhost是否解析为IPv6地址,而不是IPv4,并且MySQL没有侦听v4地址?
解决方法是让localhost解析为v4地址,或让MySQL侦听v6地址。
答案 8 :(得分:0)
如果你不在Windows上也测试mysql是否通过套接字进行连接,通常在本地进行连接。
使用mysql客户端强制tcp
mysql -usomeone -p --protocol=TCP
VS。 socket(默认在linux上)
mysql -usomeone -p
mysql -usomeone -p --protocol=socket
后者不适用于我的someone@127.0.0.1