当您第一次尝试登录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”。

就我而言,它不起作用,并在屏幕上给我一个错误:
“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 user
或mysql -u root
身份登录MySQL ,但由于尚未在您的系统上创建user@localhost
,因此无法正常工作,并且没有 sudo 权限就无法访问 root。
当您尝试以 root 用户mysql -u root@localhost
登录时,您将收到以下错误。

要解决此问题,您必须在新安装时以 sudo 身份登录 MySQL, 因为与 MySQL 关联的帐户是“root”帐户,而不是“user”帐户。
在终端中运行以下命令:
$ sudo mysql -u root
登录后,您会发现 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 ;
上述命令的行为如下所示:

在 root 帐户上设置密码
现在,您可以按照以下代码段设置或更新您的密码。确保将[ENTER-NEW-PASSWORD]替换为您的密码,并在此之前选择MySQL 数据库。
mysql> use mysql;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH 'caching_sha2_password' BY '[ENTER-NEW-PASSWORD]';
输出:

我正在使用“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
输出:

这就是修复此错误的全部内容。
暂无评论内容