首先确认MySQL服务的运行状态,判断是否真的未启动。使用以下命令查看服务状态:
sudo systemctl status mysql.service 若服务未运行(显示“inactive”或“failed”),尝试手动启动:
sudo systemctl start mysql.service 若启动失败,继续下一步排查。
错误日志是诊断启动失败的关键,通常位于/var/log/mysql/error.log。使用以下命令查看最新错误信息(实时刷新):
sudo tail -f /var/log/mysql/error.log 常见错误类型包括:配置文件语法错误、数据目录权限问题、端口冲突、磁盘空间不足等。根据日志中的具体提示针对性解决。
MySQL的主配置文件通常为/etc/mysql/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf。检查以下内容:
datadir(数据目录,默认/var/lib/mysql)、socket(套接字文件路径)等参数指向的路径存在且正确;max_connections(最大连接数)设置过高导致内存溢出,或innodb_buffer_pool_size(InnoDB缓冲池大小)超过系统可用内存。MySQL数据目录(默认/var/lib/mysql)的属主和属组必须为mysql:mysql,权限建议设置为750(目录)或640(文件)。执行以下命令修复:
sudo chown -R mysql:mysql /var/lib/mysql sudo chmod -R 750 /var/lib/mysql 权限问题会导致MySQL无法访问数据文件,是启动失败的常见原因之一。
MySQL默认使用3306端口,若该端口被其他服务占用,会导致启动失败。使用以下命令检查端口占用:
sudo netstat -tuln | grep 3306 若端口被占用,有两种解决方法:
sudo systemctl stop 占用服务名称);port参数(如改为3307),然后重启服务。磁盘空间不足会导致MySQL无法写入数据文件,进而无法启动。使用以下命令查看磁盘空间使用情况:
df -h 若/var/lib/mysql所在分区(通常为/或/home)剩余空间不足(建议保留至少10%空闲空间),清理不必要的文件(如日志、临时文件)或扩展磁盘空间。
若常规启动失败,可以尝试以安全模式启动MySQL(跳过权限检查和某些插件加载),用于排查配置或数据问题:
sudo mysqld_safe & 安全模式启动后,尝试连接MySQL(mysql -u root -p),若能进入,说明问题可能与配置或权限有关,需进一步检查。
若错误日志提示“表损坏”或“InnoDB corruption”,可以使用mysqlcheck工具修复。首先停止MySQL服务,然后执行:
sudo mysqlcheck -u root -p --auto-repair --all-databases 该命令会自动检查并修复所有数据库中的损坏表。修复完成后,重启MySQL服务。
若以上方法均无效,可能是数据库文件系统损坏。可以尝试重新初始化数据库(会清空所有数据,需提前备份):
sudo mysqld --initialize sudo systemctl start mysql.service 重新初始化后,MySQL会创建新的系统表和数据目录,需通过备份恢复数据。
若所有方法都无法解决,可以完全卸载并重新安装MySQL:
sudo apt-get --purge remove mysql-server mysql-client mysql-common sudo apt-get autoremove sudo apt-get autoclean sudo rm -rf /etc/mysql/ -R sudo rm -rf /var/lib/mysql/ -R sudo apt-get install mysql-server 重新安装后,记得运行mysql_secure_installation设置root密码和安全选项。
注意事项:
/var/lib/mysql目录);