Debian 上 MySQL(或 MariaDB)无法启动,常见原因和排查步骤如下,按顺序来基本都能定位:
sudo systemctl status mysql
sudo journalctl -xe
再看详细日志:
sudo tail -n 50 /var/log/mysql/error.log
或(MariaDB):
sudo tail -n 50 /var/log/mysql/mariadb.err
数据目录权限不对:
sudo chown -R mysql:mysql /var/lib/mysql
sudo chmod 750 /var/lib/mysql
然后:
sudo systemctl restart mysql
df -h
如果 / 或 /var 满了,清理日志或文件后重试。
检查配置文件:
sudo mysqld --verbose --help | head
sudo nano /etc/mysql/my.cnf
sudo nano /etc/mysql/mariadb.conf.d/*.cnf
可临时注释掉可疑配置再启动。
sudo netstat -tunlp | grep 3306
如果被占用,改端口或杀掉冲突进程。
日志中常见:
InnoDB: Database page corruption
可尝试:
sudo systemctl stop mysql
sudo mysqld_safe --innodb_force_recovery=1
⚠️ 仅用于紧急导出数据,不要长期运行。
Debian 升级后可能需要:
sudo mysql_install_db
或:
sudo dpkg --configure -a
Debian 一般是 AppArmor:
sudo aa-status
可临时测试:
sudo systemctl stop apparmor
sudo systemctl stop mysql
sudo tail -n 100 /var/log/mysql/error.log
sudo chown -R mysql:mysql /var/lib/mysql
sudo systemctl start mysql
如果你愿意,把下面命令的输出贴出来,我可以直接帮你判断:
sudo systemctl status mysql
sudo tail -n 50 /var/log/mysql/error.log