当前位置: 首页 > 面试题库 >

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

佴保臣
2023-03-14
问题内容

我正在设置新服务器,并继续遇到此问题。

当我尝试以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,因此可以托管网站,而iRedMail 0.9.5-1则可以托管邮件。

在安装iRedMail之前,登录MySQL数据库工作正常。我也尝试过,只是安装了iRedMail,但是然后以root身份也不起作用…

如果有人可以告诉我如何解决MySQL登录问题或如何安装iRedMail,请在现有的MySQL安装之上。是的,我尝试了安装技巧,但在配置文件中找不到那些变量。


问题答案:

某些系统,例如Ubuntu,mysql,默认情况下使用UNIX
auth_socket插件

基本上意味着: 使用它的db_users,将由 系统用户凭据 “认证” _ _
您可以root通过执行以下操作查看您的用户是否设置为:

$ sudo mysql -u root # I had to use "sudo" since is 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(推荐)

选项1:

$ sudo mysql -u root # I had to use "sudo" since is new installation

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

$ service mysql restart

选项2 :( 用您拥有的用户名替换YOUR_SYSTEM_USER)

$ sudo mysql -u root # I had to use "sudo" since is new installation

mysql> USE mysql;
mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY '';
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;

$ service mysql restart

请记住,如果使用选项#2,则必须以系统用户名(mysql -u YOUR_SYSTEM_USER)连接到mysql。

注意: 在某些系统上(例如Debian Stretch),“ auth_socket”插件称为“
unix_socket”
,因此相应的SQL命令应为:UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';

更新: 从@andy的评论看来,mysql
8.xx已更新/替换了,auth_socket因为caching_sha2_password我没有使用mysql
8.xx进行系统安装来测试此问题,但是上述步骤应该可以帮助您了解问题。这是答复:

自MySQL 8.0.4起,一项更改是新的默认身份验证插件为’caching_sha2_password’。 新的“
YOUR_SYSTEM_USER”将具有此auth插件,您现在可以使用“ mysql -u YOUR_SYSTEM_USER -p”从bash
shell登录,并在提示符下提供该用户的密码。不需要“更新用户SET插件”步骤。有关8.0.4默认身份验证插件更新,请参见https://mysqlserverteam.com/mysql-8-0-4-new-
default-authentication-plugin-
caching_sha2_password/



 类似资料:
  • 我安装了以下版本的MySQL: 我记得我在安装过程中没有为root用户设置密码。然而,如果我尝试使用命令简单地启动它,我会得到以下错误: 同样,作为root用户, 我尝试按照重置根密码:Unix和类Unix系统的说明进行操作;我在我的主目录中制作了文本文件,并从那里尝试使用选项启动MySQL服务器。但是,我再次收到权限错误: 我读到过类似的错误,无法连接到Mysql服务器;无法创建/写入pid文件

  • 我正在设置一个新的服务器,但一直遇到这个问题。 当我尝试使用root用户登录MySQL数据库时,我得到了以下错误: 错误1698(28000):拒绝用户'root'@'localhost'的访问 不管我是通过终端(SSH)连接,还是通过PHPMyAdmin或MySQL客户端(例如Navicat)连接。他们都失败了。 我查看了mysql.user表,得到了以下信息: 如您所见,root用户应该具有访

  • 我刚刚在我的Ubuntu机器上安装了MySQL服务器。所有安装都正常,当它询问我的密码时,我只需点击“回车”键,将密码留空。现在,当我尝试登录时: 只需按enter键,就会出现以下错误: 错误1698 (28000):用户'root'@'localhost'的访问被拒绝 我不知道错误是什么,也不知道如何修复它。有人能帮忙吗?我试图阅读MYSQL文档,但我不明白他们在说什么。 当我尝试访问phpMy

  • 我是Raspberry Pi和MySQL的新手。 我已经创建了一个代码,数据库在phpmyadmin运行的wamp服务器在我的PC。同时,我想在Raspberry PI3中运行这段代码。此外,当我在Raspberry Pi 3中运行代码时,我希望数据可以保存在phpmyadmin中,这样,当我在PC上运行localhost时,我从Raspberry Pi中输入的数据也可以保存在PC中。但是,当我运

  • 错误1045(28000):拒绝用户'root'@'localhost'的访问(使用密码:Y ES) 这个错误是什么意思?