我的macbook上运行了本地Web服务器,我遇到了一个奇怪的问题。我可以使用像Sequel Pro这样的程序访问MySQL,密码工作和生活很棒。
在PHP中,如果我将db服务器设置为127.0.0.1,那么一切都可以正常工作。
但是,如果我将数据库服务器更改为localhost,则会因“root”@“localhost”错误而拒绝访问。我确保MySQL套接字设置正确,但仍然无法使用localhost。
任何见解都会很棒。谢谢!
答案 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