升级 WordPress5.5 中又遇到建立数据库连接时出错

因为在线升级 WordPress 5.5 出问题,于是手动升级,但还是升级失败,这真的不合常理!硬是浪费了几个小时的时间折腾。不知道是阴差阳错或是什么原因,数据库连接时出错 实质上是没有搞清楚 MySQL8 新密码机制 caching_sha2_password 。但是我之前为何能够一直正常运行直至此次升级,却卡在此次升级里暴露出问题,难道不是奇怪吗!

升级 WordPress 5.5 的失败经历

按照常规的在线升级,登录 WordPress 后台,点击更新,因为国内网络问题,总是无法下载更新文件导致失败。接着继续反复重新操作点击更新,却又提示:另一更新正在进行。

于是就无法操作了,无论怎么点击更新,都提示:另一更新正在进行。

尝试网上的各种方法,结果不用多说,失败告终!我尝试的是这种修改主题 function.php 函数,以达到修改数据库的方法,没用!而且不推荐使用这些修改数据库的方法!

# 没用的方法!不要尝试!
global $wpdb;
$wpdb->query("DELETE FROM wp_options WHERE option_name = 'core_updater.lock'");

然后,我把没用的函数方法删除!

放弃在线更新,使用手动更新。以往我是这样手动更新的:保留 wp-content 目录 与 wp-config.php .htaccess 文件如果有的话也得保留,删除旧版本的 WordPress 所有文件。然后把最新版本的 WordPress 5.5 下载下来解压后,再通过 WinSCP 上传到服务器。最后打开网站登录 WordPress 后台会提示更新数据库,点击更新即可。但是这一次 升级 WordPress 5.5 ,失败了。

即使是上传最新版本的 WordPress 5.5 ,保留之前的 wp-content 目录,登录后台,没有提示升级数据库,依旧显示运行的是旧的 5.4 版本号,检查更新依旧提示需要更新到最新的 WordPress 5.5 。于是我在后台再次点击更新到5.5,怪事又出现了,可以正常下载更新了,更新文件之后,却还是记录的是旧的 5.4 版本号,再次检查更新,还是提示需要更新到最新的5.5!死循环了!即使是手动上传新版文件,都无法更新。这难道不是数据库出了问题吗?

好吧!反正我有数据库备份,也有 wp-content 目录备份,推倒了再来!!

root 身份登录数据库,删除之前旧的 WordPress 数据库以及用户,重新创建新的数据库(wordpress2)与用户(user2)。

然后导入之前备份的数据库到 wordpress2 ,最后配置好 wp-config.php 上的数据库用户等参数,再三确认数据库库名,用户,密码都没有错。打开网站却提示:Error establishing a database connection (建立数据库连接时出错)

这个问题花了不少的时间,最终发现 MySQL8 新密码机制 caching_sha2_password ,导致 WordPress 无法连接到数据库。

解决 WordPress 5.5 连接 MySQL8 数据库时出错的问题

本次遇到的问题是 MySQL8 新密码机制 caching_sha2_password 导致了 WordPress 建立数据库连接时出错。

以下命令是查看 MySQL 数据库用户所使用的加密机制

mysql> select user, plugin from mysql.user;
+------------------+-----------------------+
| user             | plugin                |
+------------------+-----------------------+
| mysql.infoschema | caching_sha2_password |
| mysql.session    | caching_sha2_password |
| mysql.sys        | caching_sha2_password |
| root             | mysql_native_password |
| user2            | caching_sha2_password |
+------------------+-----------------------+
5 rows in set (0.00 sec)

我们需要将 user2 用户修改为旧的加密机制 mysql_native_password ,使用以下命令修改

ALTER USER 'user2'@'localhost' IDENTIFIED WITH mysql_native_password BY '**密码**';

修改之后,再次查看 MySQL 数据库用户所使用的加密机制

mysql> select user, plugin from mysql.user;
+------------------+-----------------------+
| user             | plugin                |
+------------------+-----------------------+
| mysql.infoschema | caching_sha2_password |
| mysql.session    | caching_sha2_password |
| mysql.sys        | caching_sha2_password |
| root             | mysql_native_password |
| user2            | mysql_native_password |
+------------------+-----------------------+
5 rows in set (0.00 sec)

修改成功!

那么我们所遇到的所有的问题都解决了!

最后,强烈建议手动升级!升级之前一定要先备份好数据库!

发表评论

电子邮件地址不会被公开。 必填项已用*标注