今天在测试服务器做调试的时候,遇到Mysql的启动问题,好像是PID文件找不到了。
不科学啊,前几天还好好的呀,我也没怎么乱搞啊,然后一通百度,找到了几个解决办法。
1.有可能是已经存在mysql进程,多执行killall mysql,直到显示 no process killed.
2.有可能是mysql的data目录没有权限,用 chown -R mysql:mysql /usr/local/mysql/data 和 chmod -R 755 /usr/local/mysql/data 重新赋权。
3.或者看下/etc/my.cnf里边有指定data目录有没有问题,检查下配置文件里有没有错误的。
4.selinux要禁止,看看/etc/selinux/config,要这样配置SELINUX=disabled.
-----------------------------------------------------------------------------------------------------------------------------------
试了试都不行,重启还是失败。于是我就看了下错误日志。
执行 cat /usr/local/mysql/data/021rjsh216086s.err
看到这个错误点,原因是无法在 /tmp目录下创建文件,那么看看 /tmp目录下的权限大小。
看到这里问题就确定了,果然是权限不够啊。
执行 chmod 777 /tmp 就行了。
-------------------------------------------------------------------------------------------------------------------------
本来以为将tmp文件夹授权为777后,但发现又出现了新问题。如下图所失,Error表示orders.idb这个文件打不开了,读取不到orders的表空间。
下边也给解决方法了。
①给文件加权限。
②将orders.odb这个文件删除。
③vi /etc/my.cof 增加一行 innodb_force_recovery= 1
经过测试,②③执行均可以启动数据库,但是原来的数据,却有点损失。所以说数据备份很重要。
但是数据库设置innodb_force_recovery大于0后,可以对表进行select,create,drop操作,但insert,update或者delete这类操作是不允许的。所以还需要将数据导出来,
新建库表,再把数据导入。
参考文章:
使用innodb_force_recovery解决MySQL崩溃无法重启问题
MYSQL启动后报:ERROR! The server quit without updating PID file错误的问题解决
[真正完美解决]InnoDB: Attempted to open a previously opened tablespace
Mysql无法启动 InnoDB: Attempted to open a previously opened tablespace