登录MySQL,1698 (28000) Access denied for user ‘root’@’localhost’错误怎么解决?

当您第一次尝试登录MySQL时,此错误非常常见。

就个人而言,我也多次遇到这个问题,可能是因为我们没有按照正确的方式安装 MySQL,或者我们忘记设置密码,或者我们没有设置密码的选项。

同样,上述错误可能还有许多其他原因,但解决此错误的方法非常简单易行。在本文中,您将找到解决1698 (28000) Access denied for user ‘root’@’localhost’ 的方法。

有两种方法可以解决此错误。首先,您将看到一种简单且耗时较少的方法。如果第一种方法在您的情况下不起作用,请转到第二种方法。

方法 1:修复错误 1698 (28000) 的最简单方法:用户拒绝访问

解决此错误的最简单方法之一是调用“mysql_secure_installation”,它会要求您为MySQL root 用户设置密码。

$ sudo mysql_secure_installation 

您需要输入新密码,然后重新输入该密码以进行确认。

如果密码少于 25 个字符,系统会提示您确认是否要继续。如果您不想设置超过 25 个密码字符,只需键入“n”。

登录MySQL,1698 (28000) Access denied for user ‘root’@’localhost’错误怎么解决?
使用 mysql_secure_installation 修复错误

就我而言,它不起作用,并在屏幕上给我一个错误:

“Failed! Error: SET PASSWORD has no significance for user ‘root’@’localhost’ as the authentication method used doesn’t store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.”

如果您也发生同样的事情,请关闭终端并按照对我有用的第二组步骤进行操作。

方法 2:修复错误 1698 (28000):使用 Alter 的用户拒绝访问

第一次安装 MySQL 时,可能会找不到设置密码的选项。如果是这样,那么您需要以 root 用户身份登录 MySQL。

大多数情况下,用户可能会尝试以mysql -u usermysql -u root身份登录MySQL ,但由于尚未在您的系统上创建user@localhost ,因此无法正常工作,并且没有 sudo 权限就无法访问 root。

当您尝试以 root 用户mysql -u root@localhost登录时,您将收到以下错误。

登录MySQL,1698 (28000) Access denied for user ‘root’@’localhost’错误怎么解决?
MySQL 错误 1698(2800)

要解决此问题,您必须在新安装时以 sudo 身份登录 MySQL, 因为与 MySQL 关联的帐户是“root”帐户,而不是“user”帐户。

在终端中运行以下命令:

$ sudo mysql -u root

登录后,您会发现 MySQL 控制台如下图所示。

登录MySQL,1698 (28000) Access denied for user ‘root’@’localhost’错误怎么解决?
使用 sudo 登录 MySQL

现在您可以使用上述命令访问您的MySQL帐户,但这有一个小问题,例如您无法在没有 sudo权限的情况下登录MySQL ,并且任何权限或 sudo 用户都可以访问MySQL。

为防止这种情况,您可以设置在任何人尝试登录时显示密码提示。

MySQL 默认支持不同类型的密码机制,您会为您的 root 帐户找到“auth_socket”以使其健壮您可以选择 传统的“mysql_native_password”或最新版本8.0.0上的最新“ caching_sha2_password ”

如果您想了解有关身份验证插件的更多信息,请查看MySQL 身份验证文档。

在进行下一步之前,您应该检查您的root帐户附加了哪些密码机制或插件,以了解您可以在 MySQL 控制台上运行以下查询。

mysql> SELECT User, plugin from mysql.user ;

上述命令的行为如下所示:

登录MySQL,1698 (28000) Access denied for user ‘root’@’localhost’错误怎么解决?
在 MySQL 中检查密码插件

在 root 帐户上设置密码

现在,您可以按照以下代码段设置或更新您的密码。确保将[ENTER-NEW-PASSWORD]替换为您的密码,并在此之前选择MySQL 数据库。

mysql> use mysql;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY '[ENTER-NEW-PASSWORD]';

输出:

登录MySQL,1698 (28000) Access denied for user ‘root’@’localhost’错误怎么解决?
在 MySQL 上设置密码

我正在使用“caching_sha2_password”。如果您想在> MySQL 5.7版本上使用“mysql_native_password”,请在您的 MySQL 控制台上键入以下查询。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY '[ENTER-NEW-PASSWORD]';

实施更改后,重新启动MySQL 服务。

$ sudo systemctl restart mysql.service

重新启动服务后,在终端中键入以下代码并输入您在上面设置的密码。

$ mysql -u root -p

输出:

登录MySQL,1698 (28000) Access denied for user ‘root’@’localhost’错误怎么解决?
解决错误后重新登录 MySQL

这就是修复此错误的全部内容。

THE END
点赞7 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容