在 CentOS 上“修复 MySQL”通常分几种常见情况,下面按最常见问题给你一套排查和修复思路,你可以对照自己的情况操作。
systemctl status mysqld
journalctl -xe
或看日志:
cat /var/log/mysqld.log
df -h
如果 / 或 /var 满:
ls -ld /var/lib/mysql
修复权限:
chown -R mysql:mysql /var/lib/mysql
chmod 750 /var/lib/mysql
systemctl restart mysqld
日志常见:
InnoDB: Database page corruption
尝试:
systemctl stop mysqld
mysqld --innodb_force_recovery=4
注意:仅用于导出数据,不要长期运行
然后备份:
mysqldump -uroot -p --all-databases > all.sql
rm -f /var/lib/mysql/mysql.sock
systemctl restart mysqld
systemctl stop mysqld
mysqld_safe --skip-grant-tables &
另开终端:
mysql
执行:
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!';
exit;
重启:
systemctl restart mysqld
systemctl stop mysqld
yum remove mysql-server
yum install mysql-server
systemctl start mysqld
如果数据还在 /var/lib/mysql,一般可直接恢复。
systemctl restart mysqld
mysqlcheck -u root -p --auto-repair --all-databases
请告诉我:
我可以一步一步带你修。