温馨提示×

ubuntu mysql为何无法启动

小樊
40
2026-10-27 14:45:28
栏目: 云计算

Ubuntu 上 MySQL 无法启动的原因非常多,常见原因和排查思路如下(按最常见 → 较少见顺序):


一、先查看错误原因(最重要)

sudo systemctl status mysql
sudo journalctl -xe
sudo cat /var/log/mysql/error.log

90% 的问题看 error.log 就能定位


二、常见原因与解决办法

1️⃣ 数据目录权限问题(最常见)

错误类似:

Can't find file: './mysql/user.frm' (errno: 13)

解决:

sudo chown -R mysql:mysql /var/lib/mysql
sudo chmod -R 750 /var/lib/mysql
sudo systemctl restart mysql

2️⃣ 磁盘空间满了

df -h

如果 / 或 /var 100%:

  • 清理日志
  • 删除无用文件

3️⃣ 内存不足(OOM)

云服务器低配常见:

InnoDB: Cannot allocate memory for the buffer pool

临时解决:

sudo systemctl stop mysql
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

调小:

innodb_buffer_pool_size = 64M

重启:

sudo systemctl start mysql

4️⃣ 端口被占用(3306)

sudo netstat -tunlp | grep 3306

若有冲突:

  • 停掉占用进程
  • 或修改 MySQL 端口

5️⃣ 配置文件错误

如 /etc/mysql/my.cnf 或 mysqld.cnf 写错:

unknown variable 'xxx'

检查:

sudo mysqld --verbose --help

6️⃣ MySQL 升级 / 异常关机导致数据损坏

错误:

InnoDB: Database page corruption

可尝试:

sudo systemctl stop mysql
sudo mv /var/lib/mysql /var/lib/mysql_bak
sudo mysql_install_db --user=mysql

⚠️ 会清空数据,仅测试环境


7️⃣ AppArmor 限制(Ubuntu 特有)

sudo aa-status

如 MySQL 被限制,可:

sudo systemctl restart apparmor

三、快速自检清单

✅ 磁盘空间
✅ 权限
✅ 内存
✅ 端口
✅ 错误日志


四、如果你愿意

你可以把下面内容贴出来,我直接帮你判断:

sudo systemctl status mysql
sudo tail -n 50 /var/log/mysql/error.log

告诉我 Ubuntu 版本 + MySQL 版本,我可以更精确帮你。

0 踩