无法通过 CLI 或 phpMyAdmin 连接到 MySQL,但 WordPress 仍可正常连接

无法通过 CLI 或 phpMyAdmin 连接到 MySQL,但 WordPress 仍可正常连接

这是我第一次提出问题——我真的被难住了。

我在 Linux 服务器 (Ubuntu) 上启动并运行了 mysql,今天早上尝试登录 phpMyAdmin。我收到一条错误消息,提示我无法登录。因此,我转到命令行,输入密码mysql -u root -p,当提示输入密码时,我输入正确。然后我收到以下错误:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

奇怪的是:

我无法通过命令行或 phpMyAdmin 连接 mysql,但我的所有 WordPress 网站都运行正常。但是,如果我尝试使用其中一个 WP 网站的凭据登录,我会收到与上述相同的错误。

我检查了一下etc/mysql/my.cnf,发现:bind-address = 127.0.0.1。我尝试注释掉它并重新启动 mysql,但没有成功。我尝试将 bind-address 更改为 localhost,但仍然没有成功。现在它又回到了bind-address = 127.0.0.1。这是我对第二个 Linode 的相同设置,它具有与这个完全相同的私有 ip/网络设置(我同时设置了它们的两个静态 IP),但另一个服务器运行良好(可以连接到 MySQL),而这个服务器似乎讨厌我。

因此,最大的问题是:是什么原因导致 mysql 不再允许我连接,为什么我的 WordPress 网站仍然可以使用他们的凭据(但我不能通过 phpmyadmin 或命令行),以及如何防止这种情况在将来困扰我?

可能相关的细节:

  • 两天前我在这个 linode 上设置了一个私有 IP。

  • cat /etc/hosts包含 localhost

    127.0.0.1 本地主机.本地域 本地主机

  • ping localhost确实返回结果:

    ping localhost
    PING localhost.localdomain (127.0.0.1) 56(84) bytes of data.
    64 bytes from localhost.localdomain (127.0.0.1): icmp_req=1 ttl=64 time=0.066 ms
    64 bytes from localhost.localdomain (127.0.0.1): icmp_req=2 ttl=64 time=0.062 ms
    
  • 最近两个月来第一次重启——这与此有关系吗?

  • 好像我的 root 密码自动改变了......

非常感谢您帮助我。

答案1

我在设置 mysql 时遇到了类似的事情。MySQL 不认为localhost127.0.0.1是相同的可访问地址(尽管文档经常交替使用它们)。诀窍是,在您的情况下,连接可以更改谁可以连接以及如何连接。我会尝试明确连接到环回 IP:

mysql -h 127.0.0.1 -u root -p

如果这不起作用,您将不得不仔细检查您的 wordpress 设置以找到主机、端口、用户名和密码设置。好消息是,如果 wordpress 正在运行,则有一种方法可以进入。

连接后,问题就出在 mysql 数据库 ( use mysql) 中的用户表中。要么是访问控制只允许其中一个127.0.0.1/ localhost/外部 IP,要么匿名用户这会扰乱你的联系。

要查看您是否有任何匿名用户:

SELECT User,host from mysql.user;

如果您看到任何带有空白 @ localhost 等的内容,那就是它们。要删除:

DELETE From mysql.user where User='' and host='localhost';
FLUSH PRIVILEGES;

相关内容