我正在设置一个新的服务器,但一直遇到这个问题。

当我尝试登录MySQL数据库与根用户,我得到的错误:

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

不管我是通过终端(SSH)连接,还是通过phpMyAdmin或MySQL客户端(例如Navicat)连接。他们都失败了。

我看了mysql。用户表,得到如下:

+------------------+-------------------+
| 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,但根也不能用。

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


当前回答

我已经完成了以下步骤来摆脱这个问题。

使用(sudo MySQL -p -u root)登录到您机器中的MySQL,并执行以下查询。

CREATE USER 'jack'@'localhost' IDENTIFIED WITH mysql_native_password BY '<>'; 授予所有特权。“杰克”@“localhost”; SELECT user,plugin,host FROM mysqlWHERE user = 'root'; +------+-------------+-----------+ |用户|插件|主机| +------+-------------+-----------+ | root | auth_socket | localhost | .使用实例 +------+-------------+-----------+ ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<>'; 冲洗特权;

请尝试一次,如果您仍然得到错误。我希望这段代码对你有很大的帮助!!

其他回答

这招对我很管用:

mysql --user=root mysql
CREATE USER 'some_user'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'some_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

经过几个小时的挣扎,没有任何解决方案,这对我来说很有效。我找到了一个YouTube视频,上面说密码列现在被称为authentication_string。

所以我可以更改我的密码如下:

首先从终端进入MySQL客户端:

sudo mysql

然后在mysql里面,在mysql>后面输入whatever:

mysql> use mysql
mysql> update user set authentication_string=PASSWORD("mypass") where user='root';
mysql> flush privileges;
mysql> quit;

此时,您已经离开了MySQL客户机,回到了正常的终端位置。您需要重新启动MySQL客户端才能生效。对于这种类型,如下所示:

sudo service mysql restart

请参考这个视频链接来更好地理解。

有一个很好的和定期更新的指南,如何为最新的MySQL设置新密码:

如何在Ubuntu 20.04上安装MySQL

最好从上面的页面中阅读整个主题,但简而言之,这可能会有所帮助。

运行安全脚本:

sudo mysql_secure_installation

mysql_secure_installation的详细信息

之后,您可以按照以下步骤修改密码:

sudo mysql

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH cache_sha2_password BY 'password'

修改root用户密码的详细信息

如果遇到问题,可能需要重新安装MySQL。

步骤1。-u root -p

步骤2。使用mysql;

步骤3。ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password

这里的“admin”是你的新密码,但你可以修改它。

步骤4。退出

你完成了。

首先

sudo mysql -u root -p

SHOW VARIABLES LIKE 'validate_password%';

我们会看到这样的东西:

+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password.check_user_name    | ON     |
| validate_password.dictionary_file    |        |
| validate_password.length             | 8      |
| validate_password.mixed_case_count   | 1      |
| validate_password.number_count       | 1      |
| validate_password.policy             | MEDIUM |
| validate_password.special_char_count | 1      |
+--------------------------------------+--------+

我们需要改变这些行:

validate_password.length validate_password.number_count validate_password.policy validate_password.special_char_count

SET GLOBAL validate_password.policy=LOW;
SET GLOBAL validate_password.length=4;
SET GLOBAL validate_password.number_count=0;
SET GLOBAL validate_password.special_char_count=0;

SHOW VARIABLES LIKE 'validate_password%';

我们将看到:

+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password.check_user_name    | ON    |
| validate_password.dictionary_file    |       |
| validate_password.length             | 4     |
| validate_password.mixed_case_count   | 1     |
| validate_password.number_count       | 0     |
| validate_password.policy             | LOW   |
| validate_password.special_char_count | 0     |
+--------------------------------------+-------+

现在从MySQL客户端退出:

exit;
sudo mysql -u root -p

现在你可以写密码了,四个或四个以上的字母。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';

exit;

sudo mysql -u root -p

数据库中有root用户的新密码;