mysql查看配置是否正确

mysqld --validate-config

 

第一步(必须做):直接看 mysqld 崩在哪一行

1️⃣ systemd 的完整日志(不要省略)

 
journalctl -xeu mysqld

或 Ubuntu / Debian:

 
journalctl -xeu mysql

2️⃣ MySQL 自身错误日志(最重要)

 
tail -n 100 /var/log/mysql/error.log

请注意
🔴 不是 那条 mysql_native_password is deprecated
🔴 是 ERROR / FATAL / InnoDB / Can't / denied / failed 那种


90% 常见致命原因(对号入座)

❌ A. 数据目录初始化不完整(最常见)

日志特征:

 
[ERROR] Can't find file: './mysql/plugin.frm' [ERROR] Data Dictionary initialization failed

修复(不保数据)

 
systemctl stop mysql rm -rf /var/lib/mysql/* mysqld --initialize --user=mysql systemctl start mysql

❌ B. 权限 / SELinux / AppArmor

日志特征:

 
Permission denied Can't create/write file

修复:

 
chown -R mysql:mysql /var/lib/mysql /var/run/mysqld chmod 750 /var/lib/mysql

Ubuntu AppArmor:

 
aa-status systemctl stop apparmor systemctl start mysql

❌ C. 端口被占用

日志特征:

 
Bind on TCP/IP port: Address already in use

排查:

 
ss -lntp | grep 3306

❌ D. InnoDB 崩溃(异常关机 / 迁移)

日志特征:

 
InnoDB: corruption InnoDB: Unable to lock ./ibdata1

应急启动(只为救数据):

 
[mysqld] innodb_force_recovery=1

❌ E. 配置文件错误

日志特征:

 
unknown variable Fatal error in defaults handling

验证:

 
mysqld --validate-config

最快“确认是不是 MySQL 本身的问题”

 
mysqld --user=mysql --console

👉 这个命令会 直接把崩溃原因打印出来(systemd 看不到)


现在你只需要做一件事

把下面 任意一个完整输出贴出来(不要裁剪):

 
journalctl -xeu mysql

 
tail -n 100 /var/log/mysql/error.log

我可以 直接定位到哪一行导致 exit-code,并告诉你:

  • 是配置问题

  • 还是数据损坏

  • 要不要重建

  • 能不能保数据

一步到位解决 💯

 

posted @ 2026-01-15 14:03  技术颜良  阅读(3)  评论(0)    收藏  举报