gpt4 book ai didi

mysql - 错误 1698 (28000) : Access denied for user 'root' @'localhost'

转载 作者:行者123 更新时间:2023-11-29 03:18:26 25 4
gpt4 key购买 nike

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

当我尝试使用 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.1 LTS (Xenial Xerus) 带有 Apache、MySQL 和 PHP,因此它可以托管网站,以及 iRedMail 0.9.5-1,因此它可以托管邮件。

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

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

最佳答案

在某些系统上,例如 Ubuntu , MySQL 正在使用 Unix auth_socket plugin默认情况下。

基本上这意味着:使用它的 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. 你可以用你的system_user创建一个新的db_user(推荐)

选项 1:

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

选项 2:(将 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's comment似乎 MySQL 8.x.x 更新/替换了 caching_sha2_passwordauth_socket。我没有 MySQL 8.x.x 的系统设置来测试它。但是,上述步骤应该可以帮助您理解问题。回复如下:

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

有关 8.0.4 默认身份验证插件更新,请参阅 MySQL 8.0.4: New Default Authentication Plugin: caching_sha2_password

关于mysql - 错误 1698 (28000) : Access denied for user 'root' @'localhost' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50196741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com