Debian 系统中 MariaDB 故障排查方法
一 快速定位与通用检查
sudo systemctl status mariadbsudo systemctl restart mariadbsudo journalctl -xeu mariadbss -lntp | grep 3306、ps aux | grep mysqldmysql -u root -p -h localhostmysql -u root -p -h 127.0.0.1mysql -u <用户> -p -h <数据库服务器IP>sudo grep -i error /var/log/mysql/error.logsudo zgrep -i error /var/log/mysql/error.log.1.gzsudo grep -i -E 'mysql.*error' /var/log/syslogsudo ufw status、sudo ufw allow 3306/tcp(仅在确有远程访问需求时开启)二 常见故障与修复
systemctl status mariadb 显示 ExecStartPost 返回非 0,日志含 “Failed at step EXEC spawning /etc/mysql/debian-start: No such file or directory”。ls /etc/mysql/debian-start*;若存在 debian-start.dpkg-dist,执行 sudo cp /etc/mysql/debian-start.dpkg-dist /etc/mysql/debian-startapt download mariadb-server-<版本>;dpkg-deb --extract mariadb-server-<版本>.deb /tmp/mdb && sudo cp /tmp/mdb/etc/debian-start /etc/mysql/sudo systemctl restart mariadbmysql -u root -p 报 “Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)”。sudo systemctl is-active mariadbls -l /var/run/mysqld/mysqld.sockAccess denied for user 'root'@'localhost' (using password: YES/NO)。sudo mysql_secure_installationsudo mysqld_safe --skip-grant-tables --skip-networking &;登录后执行 ALTER USER 'root'@'localhost' IDENTIFIED BY '<新密码>'; FLUSH PRIVILEGES;,随后重启服务。三 配置与权限检查
/etc/mysql/mariadb.conf.d/50-server.cnf 或 /etc/mysql/my.cnf):将 bind-address 设为 0.0.0.0(允许远程)或 127.0.0.1(仅本地)GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '<密码>' WITH GRANT OPTION; FLUSH PRIVILEGES;sudo systemctl restart mariadbsudo chown -R mysql:mysql /var/lib/mysql四 数据损坏与恢复思路
[mysqld] 段临时加入 innodb_force_recovery=1(从 1 逐级尝试至 6,数值越大风险越高),启动后尽快导出数据:mysqldump -u root -p --single-transaction --databases 需要的库 > backup.sql五 预防性维护与优化
sudo mysql_secure_installation,设置强口令、移除匿名用户、禁止远程 root、删除测试库