最近遇到个mysql的问题,本来一直是ok的,但是昨天服务器降配后就一直启动报错:The server quit without updating PID file [FAILED]n/mysqld/mysqld.pid).。查看日志:
tailf -100 /var/log/mysqld.log
日志如下:
2020-05-07T01:16:03.312074Z 0 [Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key
2020-05-07T01:16:03.312301Z 0 [Note] Server hostname (bind-address): '*'; port: 3306
2020-05-07T01:16:03.313723Z 0 [Note] IPv6 is not available.
2020-05-07T01:16:03.313756Z 0 [Note] - '0.0.0.0' resolves to '0.0.0.0';
2020-05-07T01:16:03.313790Z 0 [Note] Server socket created on IP: '0.0.0.0'.
2020-05-07T01:16:03.313832Z 0 [ERROR] Could not open unix socket lock file /tmp/mysql.sock.lock.
2020-05-07T01:16:03.313839Z 0 [ERROR] Unable to setup unix socket lock file.
2020-05-07T01:16:03.313844Z 0 [ERROR] Aborting
然后去查看/tmp/mysql.sock.lock文件,发现存在。
查看配置文件/etc/my.cnf
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
#skip-grant-tables
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
逐个排查,发现/tmp/mysql.sock文件不存在了,虽然不知道为啥,但是总算找到问题了。
解决办法:
删除/tmp/mysql.sock.lock
然后重新初始化mysql:
/usr/local/mysql/bin/mysqld_safe --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data &
然后查看/tmp/mysql.sock.lock、/tmp/mysql.sock文件都已创建
重新启动MySQL
service mysql restart
Shutting down MySQL..2020-05-07T01:19:40.759748Z mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
[ OK ]
Starting MySQL. [ OK ]
[1]+ Done ./mysqld_safe --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
再访问mysql就ok了。