![](/img/trans.png)
[英]127.0.0.1 is accessible/working but localhost not accessible/ not working
[英]MySQL working with 127.0.0.1 but not working with localhost?
我在php MySQL中有一个奇怪的问题:
php连接127.0.0.1
但不连接localhost
。
如何解决这个问题?
尝试在命令行中ping localhost
,它可能会解析为::1:
IP6等效于127.0.0.1
要修复它,请添加(或取消注释)该行:
127.0.0.1 localhost
在C:\\WINDOWS\\system32\\drivers\\etc\\hosts
必须在您的hosts文件中定义localhost,默认情况下,它位于Windows和大多数操作系统上。
检查以下文本文件,看看是什么:
C:\WINDOWS\system32\drivers\etc\hosts
请注意“hosts”是文件,没有扩展名,它不是文件夹。 这个文件应该是空的,如果你看到你的AV /垃圾邮件阻止程序添加了大量指向127.0.0.1的条目或者讨厌的恶意软件已经写入垃圾,尽管新条目低于旧条目。 Localhost应该是该文件中的第一个条目。
对于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/
还可以查看定义用户访问权限的mysql数据库。 您可以定义允许给定用户连接的源主机。 有关详细信息,请参阅http://dev.mysql.com/doc/refman/5.1/en/connection-access.html
我记得,这是Windows上Mysql的长期记录功能。 关于本地套接字工作方式的东西。
尝试:
IE - >工具 - >选项 - >连接 - >局域网设置检查绕过代理以获取本地地址
如果MySQL连接到127.0.0.1,它通过TCP / IP连接,而如果连接到localhost,它通过套接字连接到127.0.0.1。
PHP正在寻找适合mysql.sock的地方吗? 确保php.ini和my.conf具有匹配的位置
localhost是否解析为IPv6地址,而不是IPv4,并且MySQL没有侦听v4地址?
解决方案是让localhost解析为v4地址,或让MySQL监听v6地址。
如果你不在Windows上也测试mysql是否通过套接字连接,它通常在本地。
使用mysql客户端强制tcp
mysql -usomeone -p --protocol=TCP
与套接字(默认在Linux上)
mysql -usomeone -p
mysql -usomeone -p --protocol=socket
后者不适用于我的someone@127.0.0.1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.