这是我第一次提出问题——我真的被难住了。
我在 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
包含 localhost127.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 不认为localhost
和127.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;