MySQL 8.0.15向8.0.16升级启动失败问题解决
今天Kaijia日常(已经算是月常了)从Oracle的官方源更新MySQL之后发现MySQL无法正常启动了,查看了一下/var/log/mysql.log也异常单一。
2019-04-28T02:59:39.881846Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.16) starting as process 384
2019-04-28T02:59:50.800045Z 4 [System] [MY-013381] [Server] Server upgrade from ‘80015’ to ‘80016’ started.
2019-04-28T02:59:52.461014Z 4 [ERROR] [MY-013384] [Server] Could not create server upgrade info file at ‘/var/lib/mysql/’.
2019-04-28T02:59:52.468088Z 0 [ERROR] [MY-013380] [Server] Failed to upgrade server.
2019-04-28T02:59:52.468307Z 0 [ERROR] [MY-010119] [Server] Aborting
2019-04-28T02:59:54.080113Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.16) MySQL Community Server – GPL.
早前Oracle家出错都能打印出一长串错误日志,这次仅仅留下有Could not create server upgrade info file at ‘/var/lib/mysql/’一句。
Kaijia查看了一下数据目录,发现此时用于记录当前数据目录版本的mysql_upgrade_info的所有者是root用户:
ls -l /var/lib/mysql
total 2153959
….
-rw-r–r– 1 root root 6 Apr 8 09:17 mysql_upgrade_info
….
显然这造成MySQL启动尝试更新mysql_upgrade_info内容到8.0.16时被没有足够权限。想必是8.0.15的Oracle官方源存在问题,错误得用root用户重写了mysql_upgrade_info,因此造成了问题。
1 2 |
chown mysql:mysql /var/lib/mysql/mysql_upgrade_info service mysqld restart |
运行上述命令后MySQL就可正常完成升级并启动了。如需确认,可以在日志中读到以下内容:
2019-04-28T03:02:15.207177Z 4 [System] [MY-013381] [Server] Server upgrade from ‘80015’ to ‘80016’ started.
2019-04-28T03:02:16.922262Z 4 [System] [MY-013381] [Server] Server upgrade from ‘80015’ to ‘80016’ completed.
评论