报错信息:Starting MySQL. ERROR! The server quit without updating PID file (/home/mysql/data/bogon.pid).
首先看报错信息,提示为找不到bogon.pid这个文件。这时候在查看一下mysql的日志,看一下报错是否一致,一般mysql的报错日志中的报错信息应该更加详细。如果不一致,查看mysql的日志信息报的什么错。mysql的日志应该在配置my.cnf时配置的位置。my.cnf位置一般在/etc/my.cnf或者/etc/mysql/my.cnf。我的my.cnf内容:
[mysql]
default-character-set=utf8mb4
[mysqld]
#端口
port=3306
socket = /tmp/mysql.sock
#设置数据库数据存放目录
datadir = /home/mysql/data
#设置mysql根目录
basedir = /home/mysql
#设置最大连接数
max_connections = 2000
#设置服务端字符集
character-set-server = utf8mb4
#设置默认存储引擎
default-storage-engine = InnoDB
#设置密码永不过期
default_password_lifetime=0
#设置server接受的数据包大小
max_allowed_packet = 64M
wait_timeout=1814400
explicit_defaults_for_timestamp=true
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
lower_case_table_names = 1
max_connect_errors=10000
[mysqld_safe]
log-error=/home/mysql/data/mysql.log
pid-file=/home/mysql/data/mysql.pid
可以看到我的在/home/mysql/data/mysql.log。查看日志报错为
我们直接看error,这里提示/tmp/mysql.sock已经被使用了。
这个错误表明 MySQL 服务无法启动,因为 `/tmp/mysql.sock` 这个 Unix 套接字已经被其他 MySQL 服务使用了。你可以尝试以下步骤来解决这个问题:
1. 首先,你需要找出哪个进程正在使用 `/tmp/mysql.sock` 这个套接字。你可以使用 `lsof` 命令来完成这个任务:
sudo lsof /tmp/mysql.sock
这个命令会列出所有正在使用 `/tmp/mysql.sock` 这个套接字的进程。
2. 然后,你可以使用 `kill` 命令来结束这个进程:
sudo kill -9 <PID>
请将 `<PID>` 替换为你在上一步中找到的进程 ID。
3. 最后,你可以尝试重新启动 MySQL 服务:
sudo service mysql start
如果你的系统没有 `lsof` 命令,你可以使用 `apt-get`(Debian 或 Ubuntu)或 `yum`(CentOS 或 RHEL)来安装它:
sudo apt-get install lsof
或者:
sudo yum install lsof
如果问题仍然存在,那可能是 `/tmp/mysql.sock` 这个文件被损坏了。在这种情况下,你可以尝试删除这个文件,然后重新启动 MySQL 服务。但是请注意,这个操作可能会导致正在使用这个套接字的其他服务出现问题。
一定要检查好配置文件和mysql的安装路径是否一致。
进行以上步骤后,重启还是报错的话,删除对应的文件。重新启动服务就好了。