解决宝塔面板不能备份MySQL/MariaDB数据库一例

家里的NAS服务器一直都是使用宝塔面板进行管理。近期发现,宝塔面板的数据库备份功能失效,提示无法连接数据库,无论是手动备份还是自动备份都不行,甚至是使用phpmyadmin登录,也是提示:Error 1698: Access denied for user ‘root‘@‘localhost‘ 。于是就开始查找原因。

首先说一下NAS目前的操作环境:

操作系统:Rocky Linux 9.3 x64版本

数据库:MariaDB 10.7

宝塔面板版本:8.0.4(8.0.3的时候已经发现这个问题,后来升级了也无法解决问题)。

解决过程如下:

一、分别执行以下命令,增加 Host 为 127.0.0.1 的root用户(下面的“您的密码”请替换成您自己数据库的root 用户密码),允许 root@127.0.0.1 连接:

GRANT ALL PRIVILEGES ON . TO ‘root’@’127.0.0.1’ IDENTIFIED BY ‘您的密码’ WITH GRANT OPTION;

FLUSH PRIVILEGES;

二、执行以下命令:

SELECT host,user,authentication_string,plugin FROM mysql.user;

出现如下画面:

解决宝塔面板不能备份MySQL/MariaDB数据库一例插图

从这个图里可以发现,Host为localhost的root用户,其authentication_string所对应的字段(密码)与其它两个Host的root用户是不一样的,且字段显示无效,这个应该就是导致无法用宝塔面板备份的原因。

三、删除 localhost下的 root 用户(该操作有一定风险,建议先通过其它途径备份好重要数据):

DROP USER ‘root’@’localhost’;

四、再次执行:

SELECT host,user,authentication_string,plugin FROM mysql.user;

发现 localhost 下的 root 用户已删除。

五、分别执行以下命令,重新增加 root@localhost 用户连接:

GRANT ALL PRIVILEGES ON . TO ‘root’@’localhost’ IDENTIFIED BY ‘您的密码’ WITH GRANT OPTION;

FLUSH PRIVILEGES;

注意:执行上述第四步之后,应该可以通过phpmyadmin进行登录了,也可以使用phpmyadmin进行增加 root@localhost 用户的操作。建议密码跟其它Host的root用户保持一致。

如需转载本站的文章,请先通过电子邮件的方式联系站长,站长确认后方可转载,并需要注明出处。

为您推荐