赞
踩
mysql有一天突然间启动不了,查询状态systemctl status mysql
,如下图显示
Process: 3057 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=1/FAILURE)
看重点,这个pid文件有问题,我看着眼熟,所以瞄一眼配置文件,配置文件一般在/etc/mysql/my.cnf
里,打开看看
上面的就是这个pid文件配置,下面的红框是日志配置。这个pid文件记录的是当前 mysqld 进程的ID用的,然后我切进去这个/var/run/mysqld/
看看有没有这个mysql.pid
文件,发现没了。。。空空如也。
良好的习惯告诉我看日志,所以我看看mysql的错误日志(路径在上图的方法查),打开这个日志文件,发现日志里面啥都没,我心想这不正常吧?被人动过吗?
下面提示说可以看看系统日志,用journalctl -xe
或者journalctl -r
都可以,区别的话百度一下。然后看到这两个报错提示
[ERROR] Fatal error in defaults handling. Program aborted!
Found option without preceding group in config file (前面原句,后面我只记得内容,没截到图和复制到,大概就行,前面的错是有可能一样的) my.cnf line13 (某一行)
前面的意思是默认处理中出现致命错误。程序中止!(翻译),后面是找不到设置,具体的没复制到,懒得找了,然后指着的这一行(line)指回pid的这个配置,那就简单啦,pid文件没了,自己touch建一个mysql.pid
,然后看了一下网上说的随便给个数字给他,例如6789(从这里看的.),不行的话试多几个。
然后重启systemctl restart mysql
,给我来一句
Job for mysql.service failed. See "systemctl status mysql.service" and "journalctl -xe" for details.
就是还不行咯,然后查一下status,和之前没有变化,还是fail,再看看系统日志journalctl -xe
,出现了一下这个:
[ERROR] Could not open file '/var/log/mysql/error.log' for error logging: Permission denied
简单来讲就是无权限写入这个日志里,于是乎我ll
看看明细
额。。这日志文件竟然是新的。。权限是root的,那就改改呗,用这命令
chown -R mysql:mysql error.log
然后再重启。。就可以了
问了问同事,他说他删除过日志,因为太大了,重新建了日志之后没改权限。。。好吧。
但是pid文件为啥没了,就不太清楚,暂时没找到原因。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。