mysql5.1升级到5.7碰到的问题


这几天博客一直处于不可用状态,因为我把php从5.3升级到了7.0.4,把mysql从5.1升级到了5.7。由于没有相关经验,导致了碰到问题解决时间过长。下边仔细说下碰到的两个问题。

一、php7连接不上数据库

安装完php7后,也就升级了php-fpm。停止老的php-fpm,启动新的后,发现workpress的数据库连接不成功了。记得是2002错误,文件找不到。连接mysql的host由localhost修改为127.0.0.1后,成功连上了。但是,为什么老的php-fpm就可以用localhost呢?不知道从哪个版本起,php在连接mysql的时候,如果指定host为localhost,则使用mysql.sock文件进行连接。而默认的位置是/tmp/mysql.sock,我的mysql中配置的是/var/lib/mysql/mysql.sock,所以找不到,报错了。

解决方法也很简单,做个软链:ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

或者,修改mysql的配置文件,指定sock文件位置为/tmp/mysql.sock

 

二、mysql升级到5.7后,启动失败

这个问题非常诡异,工作还忙,查了好几天才找到原因是啥。期间网上找了各种解决方案。直到今天看到一个人说某个问题同样历经各种错误答案后,自己学会看日志解决的。我也找到了mysql的日志文件,然后,启动mysql看看错误到底是啥。关键日志如下:

[Warning] Failed to open optimizer cost constant tables

[ERROR] Fatal error: mysql.user table is damaged. Please run mysql_upgrade.
[ERROR] Aborting

原来是表坏了,难道是乱操作导致的?其实应该不是的,由5.1升级到5.7,跨了太多的版本,导致5.7认不出来5.1的也很正常。然后,日志说的也很明白,使用mysql_upgrade工具修复就可以了。

执行mysql_upgrade工具后,会遍历所有的数据表逐个进行修复。当然,业务库中可能会有部分修复失败的,也有提示该如何进一步修复。

最主要的是,修复了mysql用的一些表后,服务就可以正常启动了~


《“mysql5.1升级到5.7碰到的问题”》 有 2 条评论

发表回复

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