Ubuntu MariaDB故障排查指南
导读:Ubuntu MariaDB 故障排查指南 一 快速定位流程 服务状态与端口 检查运行状态:sudo systemctl status mariadb 查看监听端口:ss -lntp | grep 3306(或 netstat) 日...
Ubuntu MariaDB 故障排查指南
一 快速定位流程
- 服务状态与端口
- 检查运行状态:sudo systemctl status mariadb
- 查看监听端口:ss -lntp | grep 3306(或 netstat)
- 日志优先
- 系统日志:sudo tail -n50 /var/log/syslog
- 错误日志:sudo tail -n50 /var/log/mysql/error.log
- 内核与启动消息:dmesg | tail -n50
- 资源与文件系统
- 资源:top/htop、free -h、df -h
- 目录权限与占用:ls -ld /var/lib/mysql、du -sh /var/lib/mysql
- 访问控制与策略
- AppArmor:sudo aa-status、必要时将 mysqld 切换为 complain 模式:sudo aa-complain /usr/sbin/mysqld
- UFW 防火墙:sudo ufw status、如需开放端口:sudo ufw allow 3306/tcp
- 配置核对
- 主配置:/etc/mysql/mariadb.conf.d/50-server.cnf(如 bind-address、port、datadir、socket)
二 常见症状与修复
- 服务无法启动
- 查看错误日志定位具体原因(语法错误、权限、磁盘满、端口占用等)
- 端口冲突:确认是否已有实例占用 3306,必要时停止旧进程或修改端口后重启
- 配置错误:核对 50-server.cnf 中关键参数与包含路径,避免重复/错误配置
- 权限/属主:确保 /var/lib/mysql 属主为 mysql:mysql,目录权限正确
- 资源不足:检查 磁盘空间 与 内存,InnoDB 缓冲池过大可能导致启动失败
- 本地/远程连接被拒绝
- 服务与端口:确认 mariadb 运行且 3306 监听
- 绑定地址:如需远程访问,将 bind-address=0.0.0.0;仅本地则保持 127.0.0.1
- 防火墙:如使用 UFW,放行 3306/tcp
- 用户权限:确保存在允许来源主机的账户,例如 ‘myuser’@‘%’ 或明确的主机段
- 忘记 root 密码
- 停止服务:sudo systemctl stop mariadb
- 安全模式启动:sudo mysqld_safe --skip-grant-tables --skip-networking &
- 登录并重置:在 MariaDB 中执行 FLUSH PRIVILEGES; ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘NewPass!’;
- 重启:sudo systemctl restart mariadb
- 认证插件导致登录失败
- 现象:如 ERROR 1524 (HY000): Plugin ‘unix_socket’ is not loaded
- 处理:在跳过权限模式中将 root 认证方式改为 mysql_native_password,或重新安装 unix_socket 插件后再调整策略
- 表损坏或异常
- MyISAM 表:使用 myisamchk -c -r /var/lib/mysql/db/tbl.MYI 修复索引
- InnoDB 建议优先用 mysqlcheck 或逻辑备份恢复,避免直接拷贝数据文件
三 关键配置与网络检查
- 配置文件与目录
- 服务器配置:/etc/mysql/mariadb.conf.d/50-server.cnf
- 客户端配置:/etc/mysql/mariadb.conf.d/50-client.cnf
- 数据目录:/var/lib/mysql(确保 mysql:mysql 属主与权限)
- 常用参数建议
- 字符集:[mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_general_ci
- InnoDB 缓冲池:建议为物理内存的 50%–70%(如 innodb_buffer_pool_size=2G)
- 连接数:根据负载设置 max_connections(如 500)
- 远程访问与防火墙
- 绑定地址:需要远程时将 bind-address=0.0.0.0;仅本地保持 127.0.0.1
- UFW:如需开放端口执行 sudo ufw allow 3306/tcp;云主机还需检查安全组规则
四 维护与恢复建议
- 备份与恢复
- 逻辑备份:mysqldump -u root -p --single-transaction --routines --triggers --databases 库名 > backup.sql
- 恢复:mysql -u root -p < backup.sql
- 安全加固
- 运行 sudo mysql_secure_installation:设置 root 密码、移除匿名用户、禁止 root 远程、删除测试库、重载权限
- 监控与日志
- 持续关注 /var/log/mysql/error.log 与 /var/log/syslog,设置监控告警
- 定期应用安全更新:sudo apt update & & sudo apt upgrade mariadb-server
- 风险提示
- 修改 bind-address 与创建远程用户会扩大攻击面,务必配合 防火墙白名单、强密码 与 最小权限 策略
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu MariaDB故障排查指南
本文地址: https://pptw.com/jishu/769006.html
