数据库
首页 > 数据库> > mysql – ERROR 1698(28000):用户’root’@’localhost’拒绝访问

mysql – ERROR 1698(28000):用户’root’@’localhost’拒绝访问

作者:互联网

所以…我正在设置一个新服务器并继续遇到这个问题.

当我尝试使用root用户登录MySQL数据库时,出现“ERROR 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应该具有访问权限.

服务器非常简单,因为我已经尝试解决这个问题了一段时间..

它运行Ubuntu 16.04.1 LTS与Apache,MySQL和PHP,因此它可以托管网站,和iRedMail 0.9.5-1,以便它可以托管邮件.

在安装iRedMail之前,登录MySQL数据库工作正常.我也试过,只是安装iRedMail,但是然后root,也行不通……

如果有人能告诉我如何修复我的MySQL登录问题或如何安装iRedMail,在现有的MySQL安装之上.是的,我尝试了Installation Tips,我在配置文件中找不到这些变量.

任何帮助深表感谢 :)

解决方法:

有些系统如Ubuntu,mysql默认使用UNIX auth_socket plugin.

基本上意味着:db_users使用它,将由系统用户凭证“auth”.您可以通过执行以下操作查看您的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插件

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

>您可以将root用户设置为使用mysql_native_password插件
>您可以使用system_user创建新的db_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作为系统用户名(mysql -u YOUR_SYSTEM_USER)

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

更新:
来自@ andy的评论似乎是mysql 8.x.x更新/替换了auth_socket for caching_sha2_password我没有用mysql 8.x.x进行系统设置来测试这个,但是上面的步骤应该可以帮助你理解这个问题.这是回复:

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

标签:mysql,iredmail
来源: https://codeday.me/bug/20190915/1805697.html