错误 1698 (28000):用户'root'@'localhost'被拒绝访问。

604

我正在搭建一个新服务器,但遇到了这个问题。

当我尝试使用root用户登录MySQL数据库时,会出现以下错误:

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

无论是通过终端(SSH)、phpMyAdmin还是MySQL客户端,比如Navicat,都无法连接成功。

我查看了mysql.user表并得到以下结果:

+------------------+-------------------+
| user             | host              |
+------------------+-------------------+
| root             | %                 |
| root             | 127.0.0.1         |
| amavisd          | localhost         |
| debian-sys-maint | localhost         |
| iredadmin        | localhost         |
| iredapd          | localhost         |
| mysql.sys        | localhost         |
| phpmyadmin       | localhost         |
| root             | localhost         |
| roundcube        | localhost         |
| vmail            | localhost         |
| vmailadmin       | localhost         |
| amavisd          | test4.folkmann.it |
| iredadmin        | test4.folkmann.it |
| iredapd          | test4.folkmann.it |
| roundcube        | test4.folkmann.it |
| vmail            | test4.folkmann.it |
| vmailadmin       | test4.folkmann.it |
+------------------+-------------------+

正如您所看到的,用户root应该有访问权限。

服务器相当简单,因为我已经尝试解决这个问题一段时间了。

它正在运行Ubuntu 16.04.1LTS(Xenial Xerus)与Apache、MySQL和PHP一起使用,以便它可以托管网站,以及iRedMail 0.9.5-1,以便它可以托管邮件。

在安装iRedMail之前,登录MySQL数据库没有问题。我还尝试仅安装iRedMail,但是root也无法工作。

我该如何解决我的MySQL登录问题或如何在现有的MySQL安装上安装iRedMail?是的,我尝试了安装提示,但我在配置文件中找不到那些变量。


4
我点击了这个链接,第一个选项对我有用:https://askubuntu.com/questions/763336/cannot-enter-phpmyadmin-as-root-mysql-5-7 - Mikael Arhelger
21
"sudo mysql_secure_installation" 是最简单的修复方法。 - Sergey Ponomarev
在2022年3月2日,这是“MySQL客户端ERROR 1698 28000用户访问被拒绝”的*头号搜索引擎结果。 - Peter Mortensen
23个回答

0

我已经按照以下步骤解决了这个问题。

在您的机器上使用 (sudo mysql -p -u root) 登录到 MySQL,并执行以下查询。

  1. 创建用户'jack'@'localhost',使用mysql_native_password身份验证方式,并设置密码为'<>'。

  2. 授予'jack'@'localhost'所有数据库的全部权限。

  3. 查询mysql.user表中user为'root'的记录的user、plugin和host字段。

    +------+-------------+-----------+
    | user | plugin      | host      |
    +------+-------------+-----------+
    | root | auth_socket | localhost |
    +------+-------------+-----------+
    
  4. 修改用户'root'@'localhost'的身份验证方式为mysql_native_password,并设置密码为'<>'。

  5. 刷新权限。

如果您仍然遇到错误,请尝试运行一次。我希望这段代码能够对您有所帮助!


0

对于任何尝试了这里的解决方案但仍然无法工作的人,请确保您正在使用正确的命令,即sudo sudo mysql -u root -p而不是mysql mysql -u root -p

您需要输入两个密码,一个是当前用户的密码,另一个是root密码。


确实令人困惑。它是系统用户名还是MySQL用户名(或者它们可能以某种方式相互连接)?您能在*您的回答中更清晰地表述吗?例如,“the root one”是指什么?(但不要*包括“Edit:”,“Update:”或类似内容 - 回答应该看起来像今天编写的。) - Peter Mortensen

-1

你想使用 root 用户访问 MySQL,但是没有提供正确的密码。

如果你需要为 root 设置新密码,MySQL 的官网有很好的文档介绍如何操作:B.3.3.2 如何重置 Root 密码

不会在这里展示该过程,因为 MySQL 在上述链接中的文档已经非常清晰明了。


1
谢谢您的回答,但我无法使其工作,所以我选择安装带有pgSQL数据库的iRedMail。 - Folkmann
Roger Folkman!很高兴知道你总算设法解决了问题。 - Cristian Gonçalves
2
链接会失效。mysql.com在多年来经历了许多链接失效的情况。您可以将相关信息复制并粘贴到这里,只要注明出处即可。 - Goose

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接