如何解决错误 1698 (28000): 拒绝用户 'root'@'localhost' 的访问
在某些系统上,例如Ubuntu,MysqL 默认使用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
插件。
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_socket
for caching_sha2_password
. 我没有使用 MysqL 8.xx
的系统设置来测试它。但是,上述步骤应该可以帮助您理解问题。这是回复:
MysqL 8.0.4 的一个变化是新的默认身份验证插件是“caching_sha2_password”。 新的“YOUR_SYstem_USER”将具有此身份验证插件,您现在可以使用“MysqL -u YOUR_SYstem_USER -p”从 Bash shell 登录,并在提示符下提供该用户的密码。不需要“更新用户设置插件”步骤。
解决方法
我正在设置一个新服务器并不断遇到这个问题。
当我尝试使用 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 举报,一经查实,本站将立刻删除。