温馨提示×

ubuntu mysql为何启动失败

小樊
41
2026-08-11 11:26:33
栏目: 云计算

Ubuntu 上 MySQL 启动失败 的原因很多,下面按最常见 → 较少见的顺序给你排查思路,并附上常用的排错命令。你可以一步步对照。


一、先看错误日志(最关键)

90% 的问题都能在这里找到原因。

sudo journalctl -xe
sudo systemctl status mysql

或直接看 MySQL 日志:

cat /var/log/mysql/error.log

常见提示:

  • Can't start server: Bind on TCP/IP port: Address already in use
  • InnoDB: Unable to lock ./ibdata1
  • Permission denied
  • Data directory is not accessible

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

1️⃣ 端口被占用(3306)

sudo netstat -tulnp | grep 3306

如果已有进程占用:

sudo kill -9 PID

或改端口:

# /etc/mysql/mysql.conf.d/mysqld.cnf
port = 3307

2️⃣ 数据目录权限错误(非常常见)

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

然后重启:

sudo systemctl restart mysql

3️⃣ InnoDB 表空间损坏

错误日志中常见:

InnoDB: Database page corruption

尝试:

sudo systemctl stop mysql
sudo mv /var/lib/mysql /var/lib/mysql.bak
sudo mysql_install_db --user=mysql
sudo systemctl start mysql

⚠️ 会清空数据,生产环境慎用


4️⃣ MySQL 配置文件错误

sudo mysqld --verbose --help | grep my.cnf

检查:

sudo nano /etc/mysql/my.cnf
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

常见错误:

  • 少了 [mysqld]
  • 路径不存在
  • 参数写错

5️⃣ 磁盘空间不足

df -h

如果 /var 满了:

sudo apt clean
sudo rm -rf /var/log/mysql/*

6️⃣ MySQL 版本冲突

Ubuntu 上常见:

  • 同时装了 mysql-servermariadb-server

检查:

dpkg -l | grep -E 'mysql|mariadb'

解决:

sudo apt remove --purge mariadb*
sudo apt autoremove

7️⃣ AppArmor 限制(Ubuntu 特有)

sudo systemctl status apparmor

临时测试:

sudo systemctl stop apparmor
sudo systemctl restart mysql

三、快速自检清单 ✅

你可以直接复制执行:

sudo systemctl status mysql
cat /var/log/mysql/error.log
df -h
ls -ld /var/lib/mysql

四、如果你愿意,我可以直接帮你定位

请把下面信息发我(贴一部分即可):

  1. Ubuntu 版本
    lsb_release -a
    
  2. MySQL 版本
    mysql --version
    
  3. 完整的错误日志
    tail -n 50 /var/log/mysql/error.log
    

我可以精确到「哪一行配置错了」或「要不要重建数据目录」。

0