2011-03-08 69 views
2

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

在PHP中,如果我将db服务器设置为127.0.0.1,则一切正常。

但是,如果我将数据库服务器更改为本地主机,则会出现'root'@'localhost'错误的访问被拒绝的情况。我已经确定MySQL套接字安装正确,但仍然无法使用本地主机。

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

+1

一种ServerFault问题吗? – fredley 2011-03-08 22:57:41

回答

4

here

在本地主机上设置root用户的初始密码。为root @ localhost = PASSWORD('new_password');设置密码为root @ localhost = PASSWORD('new_password'); FLUSH PRIVILEGES;

+0

这是少选票,但他的问题真正的答案:) – tacone 2011-03-09 00:05:07

1

在你的my.cnf文件,要么改变你的绑定地址为localhost或删除绑定地址完全设置(这会让MySQL的监听所有IP的)。

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

+0

是否有任何重大安全问题去除bind-address设置? – 2014-08-19 23:11:05

+0

如果您的计算机有多个IP地址,那么您会将您的服务器暴露给所有这些IP。如果你在谈论一台单一的IP机器,我不会指望它是一个问题。 – 2014-10-03 21:49:21

5

除了迈克尔的话,

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

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

它不是一个典型的TCP/IP连接。如果你有从127.0.0.1:3306到192.168.1.2:3306的本地端口转发,“mysql -h localhost”会尝试连接到本地的unix套接字文件。

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

0

这是什么修复了我。对于默认套接字,PHP.INI默认为与MySQL不同的位置。要解决,只需要运行这两个命令来添加一个别名(无需重启需要):

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

Source