【问题标题】:MySQL localhost / 127.0.0.1 problemMySQL localhost / 127.0.0.1 问题
【发布时间】:2011-07-11 11:53:45
【问题描述】:

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

在 PHP 中,如果我的数据库服务器为 127.0.0.1,一切正常。

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

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

【问题讨论】:

    标签: php mysql sockets localhost


    【解决方案1】:

    来自here

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

    为 root@localhost=PASSWORD('new_password'); 设置密码 刷新特权;

    【讨论】:

    • 这是投票较少的,但他的问题的真正答案:)
    【解决方案2】:

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

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

    【讨论】:

    • 完全删除绑定地址设置是否存在重大安全问题?
    • 如果您的机器有多个 IP 地址,那么您的服务器就会暴露给所有这些 IP。如果您谈论的是单个 IP 机器,我不认为这是一个问题。
    【解决方案3】:

    除了迈克尔的话,

    还有另一个链接: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),但希望它对您有所帮助。

    【讨论】:

      【解决方案4】:

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

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

      Source

      【讨论】:

        猜你喜欢
        • 2017-02-21
        • 2011-01-18
        • 1970-01-01
        • 2011-07-14
        • 2020-01-22
        • 2018-02-23
        • 2019-05-09
        • 2019-06-23
        • 2012-01-31
        相关资源
        最近更新 更多