温馨提示×

ubuntu mysql为啥启动不了

小樊
40
2026-09-12 23:39:03
栏目: 云计算

Ubuntu 上 MySQL 启动不了的原因有很多,下面我按最常见原因 → 排查方法 → 解决办法给你梳理一下,你可以一步步对照。


一、先看错误原因(最关键)

先执行:

sudo systemctl status mysql

sudo journalctl -xe

常见报错关键词:

  • Job failed
  • Can't start server
  • Permission denied
  • Port 3306 already in use
  • InnoDB: ...

把报错贴出来,能直接定位问题。


二、最常见原因及解决办法

1️⃣ 磁盘空间满了(非常常见)

df -h

如果 //var 使用率 100%:

sudo apt clean
sudo rm -rf /var/lib/mysql/ib_logfile*

然后重启:

sudo systemctl restart mysql

2️⃣ 权限问题(MySQL 数据目录)

MySQL 数据目录一般是:

/var/lib/mysql

检查权限:

ls -ld /var/lib/mysql

正确应为:

drwx------ mysql mysql

修复:

sudo chown -R mysql:mysql /var/lib/mysql
sudo chmod 700 /var/lib/mysql

3️⃣ 端口被占用(3306)

sudo netstat -tunlp | grep 3306

如果有其他进程:

  • 停掉它
  • 或修改 MySQL 端口

4️⃣ 配置文件错误

检查配置:

sudo mysqld --verbose --help | head
sudo nano /etc/mysql/my.cnf

或:

sudo mysqladmin variables

常见错误:

  • 路径不存在
  • 拼写错误
  • 重复配置

5️⃣ InnoDB 崩溃(异常关机)

查看日志:

sudo cat /var/log/mysql/error.log

如果是 InnoDB 损坏:

sudo systemctl stop mysql
sudo rm -f /var/lib/mysql/ib_logfile*
sudo systemctl start mysql

⚠️ 会丢失未提交事务,生产环境慎用


6️⃣ AppArmor 限制

sudo aa-status

如果是 AppArmor 导致:

sudo systemctl stop apparmor
sudo systemctl disable apparmor

7️⃣ MySQL 没装好 / 升级中断

sudo dpkg --configure -a
sudo apt install -f

三、通用重启流程

sudo systemctl stop mysql
sudo systemctl start mysql
sudo systemctl status mysql

四、你可以这样给我信息,我直接帮你定位

请把下面内容贴出来:

  1. Ubuntu 版本
  2. MySQL 版本
  3. systemctl status mysql 输出
  4. /var/log/mysql/error.log 关键报错

我可以直接告诉你是哪一条导致的、怎么修

0