微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决错误 1698 (28000): 拒绝用户 'root'@'localhost' 的访问

在某些系统上,例如UbuntuMysqL 认使用Unix auth_socket 插件

基本上这意味着:使用它的 db_users 将通过 _ *_您可以通过执行以下操作来查看您的root用户是否设置为这样:

sudo MysqL -u root # I had to use "sudo" since it was a new installation

MysqL> USE MysqL;
MysqL> SELECT User, Host, plugin FROM MysqL.user;

+------------------+-----------------------+
| User             | plugin                |
+------------------+-----------------------+
| root             | auth_socket           |
| MysqL.sys        | MysqL_native_password |
| debian-sys-maint | MysqL_native_password |
+------------------+-----------------------+

正如您在查询中看到的,root用户正在使用该auth_socket插件

有两种方法可以解决这个问题:

  1. 可以设置 root 用户使用MysqL_native_password插件
  2. db_user你可以和你一起创造一个新的system_user(推荐)

sudo MysqL -u root # I had to use "sudo" since it was a new installation

MysqL> USE MysqL;
MysqL> UPDATE user SET plugin='MysqL_native_password' WHERE User='root';
MysqL> FLUSH PRIVILEGES;
MysqL> exit;

sudo service MysqL restart

将 YOUR_SYstem_USER 替换为您拥有的用户名

sudo MysqL -u root # I had to use "sudo" since it was a new installation

MysqL> USE MysqL;
MysqL> CREATE USER 'YOUR_SYstem_USER'@'localhost' IDENTIFIED BY 'YOUR_PASSWD';
MysqL> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYstem_USER'@'localhost';
MysqL> UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYstem_USER';
MysqL> FLUSH PRIVILEGES;
MysqL> exit;

sudo service MysqL restart

请记住,如果您使用选项 #2,您必须以系统用户名 ( MysqL -u YOUR_SYstem_USER) 连接到 MysqL

在某些系统(例如,Debian 9 (Stretch))上,’auth_socket’ 插件被称为‘unix_socket’,因此相应的 sql 命令应该是:UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYstem_USER';

andy 的评论来看,MysqL 8.xx 似乎更新/替换了auth_socketfor caching_sha2_password. 我没有使用 MysqL 8.xx 的系统设置来测试它。但是,上述步骤应该可以帮助您理解问题。这是回复

MysqL 8.0.4 的一个变化是新的认身份验证插件是“caching_sha2_password”。 新的“YOUR_SYstem_USER”将具有此身份验证插件,您现在可以使用“MysqL -u YOUR_SYstem_USER -p”从 Bash shell 登录,并在提示符下提供该用户的密码。不需要“更新用户设置插件”步骤。

有关 8.0.4 认身份验证插件更新,请参阅

解决方法

我正在设置一个新服务器并不断遇到这个问题。

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

错误 1698 (28000): 拒绝用户 ‘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 应该具有访问权限。

服务器非常简单,因为我已经尝试对此进行故障排除一段时间了。

它运行带有 Apache、MySQL 和 PHP 的Ubuntu
16.04.1

LTS (Xenial Xerus),以便它可以托管网站,以及 iRedMail 0.9.5-1,以便它可以托管邮件。

在我安装 iRedMail 之前登录 MySQL 数据库工作正常。我也试过只安装 iRedMail,但 root 也不起作用。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。