Ubuntu MariaDB故障排除有哪些步骤
导读:Ubuntu MariaDB故障排除步骤 一 快速定位与日志检查 确认服务状态与最近日志: 查看状态:sudo systemctl status mariadb 查看系统日志:sudo journalctl -u mariadb -xe...
Ubuntu MariaDB故障排除步骤
一 快速定位与日志检查
- 确认服务状态与最近日志:
- 查看状态:sudo systemctl status mariadb
- 查看系统日志:sudo journalctl -u mariadb -xe
- 定位错误日志文件:
- 常见位置:/var/log/mariadb/error.log 或 /var/log/mysql/error.log
- 若自定义了配置,可在 /etc/mysql/my.cnf 或 /etc/my.cnf 的 [mysqld] 段查看 log_error 项
- 高效筛选关键信息:
- 关键字:grep -i “failed|error|access denied” /var/log/mariadb/error.log
- 最新行:tail -n 50 /var/log/mariadb/error.log
- 时间段:journalctl -u mariadb --since “2026-01-05 09:00:00” --until “2026-01-05 10:00:00”
二 服务无法启动的排查
- 配置与权限:
- 核对配置语法:mysqld --verbose --help
- 检查数据目录与文件权限(以 /var/lib/mysql 为例):ls -ld /var/lib/mysql /var/lib/mysql/;必要时修正属主属组:sudo chown -R mysql:mysql /var/lib/mysql
- 资源与冲突:
- 磁盘空间:df -h;InnoDB 启动需可用空间,空间不足会导致启动卡住或失败
- 端口占用:ss -lntp | grep 3306;若被占用,结束对应 PID 或调整端口
- 多实例/锁文件:检查是否已有实例占用数据文件(如 ibdata1 被锁),必要时停止重复实例
- 依赖与初始化:
- 常见缺失依赖:libaio1、numactl(缺失时 mysqld 启动会报找不到共享库)
- 配置包含路径:排查是否误包含错误/旧配置(如 /etc/my.cnf、/etc/mysql/my.cnf、~/.my.cnf),必要时仅保留一份主配置
- 包/初始化脚本异常:
- 若安装/升级后 ExecStartPost=/etc/mysql/debian-start 失败,确认该脚本是否存在并可执行;缺失可从对应版本的 mariadb-server 包中解压恢复后重试启动
三 连接与认证问题的排查
- 本机 socket 连接失败(如 ERROR 2002):
- 确认服务运行:sudo systemctl status mariadb
- 检查 socket 路径与权限(常见 /var/run/mysqld/mysqld.sock),必要时查看 my.cnf 的 [mysqld] socket 与客户端 [client] socket 是否一致
- 远程连接失败(如 ERROR 2003):
- 监听地址:在 /etc/mysql/my.cnf 的 [mysqld] 中设置 bind-address=0.0.0.0(允许所有 IP),或指定服务器内网 IP
- 防火墙/安全组:开放 3306/tcp(示例:sudo ufw allow 3306;云主机需配置安全组入站规则)
- 认证失败(如 ERROR 1045):
- 使用正确凭据登录;若忘记 root 密码或插件异常,可在维护模式重置(见下一节)
- 检查用户主机与权限:SELECT Host,User,plugin FROM mysql.user; ;必要时创建允许远程的主机用户并授权
- 特定升级后登录异常(如 ERROR 1524 Plugin ‘unix_socket’ is not loaded):
- 说明:部分升级路径会导致 root 使用 unix_socket 插件,若不可用需改为 mysql_native_password
- 处理:以维护模式登录后执行:UPDATE mysql.user SET plugin=‘mysql_native_password’ WHERE User=‘root’; FLUSH PRIVILEGES;
四 维护模式与安全加固
- 进入维护模式(跳过权限表,谨慎操作):
- 停止服务:sudo systemctl stop mariadb
- 安全方式启动:sudo mysqld_safe --skip-grant-tables --skip-networking &
- 登录并修复:执行必要的 UPDATE/FLUSH PRIVILEGES; 后退出并正常重启
- 首次/定期安全加固:
- 运行:sudo mysql_secure_installation(设置 root 密码、移除匿名用户、禁止 root 远程、删除 test 库等)
- 通用建议:
- 变更前备份数据与配置;变更后复核 error.log 与 journalctl 输出,确保无异常
五 高频错误速查表
| 症状 | 快速检查 | 常见修复 |
|---|---|---|
| ERROR 2002 Can’t connect to local MySQL server through socket | 服务是否运行;socket 路径与权限 | 启动服务;修正 my.cnf 中 [mysqld]/[client] 的 socket 一致 |
| ERROR 2003 Can’t connect to MySQL server | 监听地址、端口占用、防火墙 | 设置 bind-address=0.0.0.0;开放 3306;释放占用端口 |
| ERROR 1045 Access denied | 用户名/密码/主机;用户表 plugin | 用正确凭据登录;调整用户 host 与权限;必要时重置密码/plugin |
| 启动卡住/失败 | 磁盘空间、InnoDB 锁、配置错误 | 清理空间;结束重复实例;核对 my.cnf 与包含路径 |
| ERROR 1524 Plugin ‘unix_socket’ is not loaded | 升级后 root 认证插件异常 | 维护模式将 root 的 plugin 改为 mysql_native_password 并刷新权限 |
| ExecStartPost=/etc/mysql/debian-start failed | 脚本是否存在/可执行 | 从 mariadb-server 包提取 debian-start 到 /etc/mysql 后重试启动 |
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu MariaDB故障排除有哪些步骤
本文地址: https://pptw.com/jishu/786651.html
