MySQL localhost / 127.0.0.1问题

时间:2011-03-08 22:55:30

标签: php mysql sockets localhost

我的macbook上运行了本地Web服务器,我遇到了一个奇怪的问题。我可以使用像Sequel Pro这样的程序访问MySQL,密码工作和生活很棒。

在PHP中,如果我将db服务器设置为127.0.0.1,那么一切都可以正常工作。

但是,如果我将数据库服务器更改为localhost,则会因“root”@“localhost”错误而拒绝访问。我确保MySQL套接字设置正确,但仍然无法使用localhost。

任何见解都会很棒。谢谢!

4 个答案:

答案 0 :(得分:5)

除了迈克尔的话,

还有另一个链接:http://dev.mysql.com/doc/refman/5.1/en/connecting.html,它说:

  

在Unix上,MySQL程序专门处理主机名localhost   与其他人相比可能与您的期望不同的方式   基于网络的程序。用于连接到localhost,MySQL程序   尝试使用Unix套接字文件连接到本地服务器。   即使给出了--port或-P选项来指定端口,也会发生这种情况   号。

这不是典型的tcp / ip连接。如果你有从127.0.0.1:3306到192.168.1.2:3306的本地端口转发,“mysql -h localhost”将尝试连接到本地unix套接字文件。

它不是特定于你的问题(因为你正在运行php),但希望它无论如何都有帮助。

答案 1 :(得分:4)

来自here

在localhost上设置root用户的初始密码。

root @ localhost = PASSWORD('new_password')的SET PASSWORD; FLUSH PRIVILEGES;

答案 2 :(得分:1)

在my.cnf文件中,将 bind-address 更改为localhost或完全删除 bind-address 设置(这将使mysql监听所有IP)

my.cnf文件通常位于/ etc或/ etc / mysql中。

答案 3 :(得分:0)

这就是为我解决的问题。对于默认套接字,PHP.INI默认使用与MySQL不同的位置。要修复,只需运行这两个命令即可添加别名(无需重启):

mkdir /var/mysql
ln -s /tmp/mysql.sock /var/mysql/mysql.sock

Source