MySql:错误 1045(28000):尽管密码正确,但用户“root”@“localhost”的访问被拒绝

MySql:错误 1045(28000):尽管密码正确,但用户“root”@“localhost”的访问被拒绝

我使用 mariadb 运行 Debian 11,一切正常。就在昨天,我发现不同的命令(例如“/etc/init.d/mariadb reload”或“mysql -u root”)带来了错误:

错误 1045(28000):拒绝用户“root”@“localhost”访问(使用密码:否)

但我可以用“mysql -u root -p xxx”登录。

密码似乎没问题:

从 mysql.user 中选择用户、主机、authentication_string、插件,其中用户 ='root';

输出如下:

| 根 | 本地主机 | *A1500BDAC90A8E0183B2803086BD6D6E0999EC60 | mysql_native_password | | 根 | ::1 | *A1500BDAC90A8E0183B2803086BD6D6E0999EC60 | mysql_native_password | | 根 | 我的服务器 | *A1500BDAC90A8E0183B2803086BD6D6E0999EC60 | mysql_native_password | | 根 | 127.0.0.1 | *A1500BDAC90A8E0183B2803086BD6D6E0999EC60 | mysql_native_password

我不明白的是:使用插件“mysql_native_password”和设置的密码,我应该能够使用“mysql -u root”登录。bind-address 设置为 0.0.0.0。

显示对 'root'@'localhost' 的授予;

带来以下 3 行:

第 1 行:授予所有权限root@localhost密码‘*A1500BDAC90A8E0183B2803086BD6D6E0999EC60’ 并附带授予选项

第 2 行:授予 ''@'%' 上的代理权给 'root'@'localhost',并提供授予选项
第 3 行:授予 ''@'%' 上的代理权给 'root'@'localhost',并提供授予选项

MySQL(mariadb)在服务器上运行,所有网站都可以访问它,没有任何错误。只有 debian 无法访问。有什么想法吗?

编辑 :

我想我知道问题所在:上面提到的 root@localhost 权限看起来像旧版 mysql 的语法。我使用 Debian 11 版的 mariadb。我猜,我错误地将 root 权限从旧系统逐一导出到新系统。

问题只是:它应该看起来如何正确?我查看了另一台运行 Debian 11 的服务器。那里的权限如下:

授予所有权限。通过 mysql_native_password 向 root@localhost 授予使用 '*84A00BCFE90A8E0183B2803086BD6D6E0999EC12' 或 unix_socket 授予权限

我可以尝试一下而不冒着完全锁定我的风险吗?再次:包含所有 mysql 数据库的 Web 服务器运行良好。我是否应该尝试运行该行,当然,只需使用正确的密码哈希值?有人可以确认一下吗?谢谢!

答案1

我解决了!

由于没有人确认它能像我在“编辑”中提到的那样工作,所以我现在冒险尝试了一下。通过运行 mysql 命令:

GRANT ALL PRIVILEGES ON *.* TO `root`@`localhost` IDENTIFIED VIA
mysql_native_password USING
'*84A00BCFE90A8E0183B2803086BD6D6E0999EC12' OR unix_socket WITH GRANT
OPTION

... 我让它再次运行。debian root 现在又可以无密码访问 mysql root 了。

我希望这能帮助任何遇到同样问题的人。只需确保将哈希值“*84A00BCFE90A8E0183B2803086BD6D6E0999EC12”替换为您自己的哈希值(具体取决于您的密码)!

相关内容