繁体   English   中英

MySQL使用127.0.0.1但不使用localhost?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM