我用mariadb运行Debian 11,一切正常。就在昨天,我看到不同的命令,如/etc/init.d/mariadb reload
或mysql -u root
带来错误:
错误1045(28000):拒绝用户'root'@'localhost'的访问(使用密码:否)
但是我可以用mysql -u root -p xxx
登录。
密码似乎没问题:
SELECT User,Host,authentication_string,plugin FROM mysql.user WHERE User='root';
产生以下输出:
| root | localhost | *A1500BDAC90A8E0183B2803086BD6D6E0999EC60 | mysql_native_password |
| root | ::1 | *A1500BDAC90A8E0183B2803086BD6D6E0999EC60 | mysql_native_password |
| root | myserver | *A1500BDAC90A8E0183B2803086BD6D6E0999EC60 | mysql_native_password |
| root | 127.0.0.1 | *A1500BDAC90A8E0183B2803086BD6D6E0999EC60 | mysql_native_password |
我不明白的是:与插件mysql_native_password
和设置密码我应该能够登录与mysql -u root
,例如. bind-address
被设置为0.0.0.0
.
MySQL(MariaDB)运行在服务器上,所有的网站都可以访问它,没有任何错误。只是Debian不能访问它。有什么想法吗?
编辑:
SHOW GRANTS FOR 'root'@'localhost';
带来了这3行:
Row 1: GRANT ALL PRIVILEGES ON . TO root@localhost IDENTIFIED BY PASSWORD '*A1500BDAC90A8E0183B2803086BD6D6E0999EC60' WITH GRANT OPTION
Row 2: GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION
Row 3: GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION
我不需要任何unix_socket
在里面吗?
编辑2:
我想我知道问题所在:上面提到的root@localhost
的特权看起来像旧版本MySQL的语法。我使用的是mariadb von Debian 11。我猜,我错误地将root 1的特权从旧系统导出到新系统。
问题是它看起来怎么样?
我看了另一台运行Debian 11的服务器。那里的特权是这样的:
GRANT ALL PRIVILEGES ON *.* TO `root`@`localhost` IDENTIFIED VIA
mysql_native_password USING
'*84A00BCFE90A8E0183B2803086BD6D6E0999EC12' OR unix_socket WITH GRANT
OPTION
我能试着不冒着把自己完全锁在外面的风险吗?再说一遍:所有MySQL数据库的网络服务器运行正常。我应该尝试运行这一行,当然,只是正确的密码哈希?谢谢!
1条答案
按热度按时间velaa5lx1#
我解决了!
由于没有人确认它会像“编辑2”中提到的那样工作,我现在冒着风险尝试一下。通过运行mysql命令:
...我让它再次运行。debian root现在再次无密码访问mysql root。
我希望这可以帮助任何面临同样问题的人。只要确保将散列'* 84 A00 BCFE 90 A8 E0183 B2803086 BD 6D 6 E0999 EC 12'替换为您自己的散列,具体取决于您的密码!