Ubuntu MariaDB连接问题怎么排查
导读:Ubuntu MariaDB 连接问题排查清单 一 快速自检 确认服务是否运行:执行sudo systemctl status mariadb,若未运行则sudo systemctl start mariadb;修改配置后记得sudo s...
Ubuntu MariaDB 连接问题排查清单
一 快速自检
- 确认服务是否运行:执行sudo systemctl status mariadb,若未运行则sudo systemctl start mariadb;修改配置后记得sudo systemctl restart mariadb。
- 本地能否登录:执行mysql -u root -p,能登录说明数据库本体与本地认证基本正常。
- 远程还是本机:本机直连失败多为账户/权限/套接字;远程失败优先排查网络与访问授权。
- 明确报错关键词:如ERROR 2003 (HY000)、ERROR 1045 (28000)、10061、或Plugin ‘unix_socket’ is not loaded,可快速定位方向。
二 常见错误与对应处理
| 症状与错误码 | 可能原因 | 处理要点 |
|---|---|---|
| 服务未启动或端口未监听 | MariaDB 未运行/未监听 3306 | systemctl 启动;必要时查看监听与端口占用 |
| ERROR 2003 (HY000) Can’t connect to MySQL server | 服务未启动、网络不通、端口未放行、配置绑定到 127.0.0.1 | 启动服务;放通 3306;检查 bind-address |
| Navicat 10061 / Can’t connect to MySQL server | 远程未授权、端口不对、防火墙/安全组拦截 | 授权远程用户;确认端口 3306;放行防火墙/安全组 |
| ERROR 1045 (28000) Access denied | 用户名/密码错误、host 不匹配、plugin 认证方式限制 | 核对凭据;检查用户 host 字段;必要时调整 plugin 与密码 |
| Plugin ‘unix_socket’ is not loaded | root 默认用 unix_socket 插件,仅本地 socket 可登录 | 改用 socket 登录或切换为 mysql_native_password 认证 |
三 分步排查流程
- 服务与端口
- 查看状态:sudo systemctl status mariadb;未运行则启动。
- 监听端口:执行ss -lntp | grep 3306或netstat -tulpen | grep 3306,确认 mysqld 在 0.0.0.0:3306 或 127.0.0.1:3306 监听。
- 本地登录验证
- 执行mysql -u root -p;若报Plugin ‘unix_socket’ is not loaded,可先以 socket 登录(如 sudo mysql)后执行:
- 查看插件与账户:SELECT Host,User,plugin FROM mysql.user WHERE User=‘root’;
- 切换为密码认证:UPDATE mysql.user SET plugin=‘mysql_native_password’ WHERE User=‘root’; (按需设置密码)
- 使权限生效:FLUSH PRIVILEGES;
- 远程连接三要素
- 配置监听:编辑**/etc/mysql/mariadb.conf.d/50-server.cnf**,将bind-address改为0.0.0.0(或注释掉该行),然后重启。
- 账户授权:在 mysql 中执行(示例创建新用户并授权指定库):
- CREATE USER ‘dbadmin’@‘%’ IDENTIFIED BY ‘StrongPass!’;
- GRANT ALL PRIVILEGES ON my_db. TO ‘dbadmin’@‘%’; *
- FLUSH PRIVILEGES;
- 防火墙/云安全组:
- UFW:sudo ufw allow 3306/tcp
- firewalld:sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent & & sudo firewall-cmd --reload
- 云服务器需同时在安全组放行 3306 入站。
- 连通性测试
- 本机:mysql -h 127.0.0.1 -P 3306 -u dbadmin -p
- 远程:mysql -h < 服务器IP> -P 3306 -u dbadmin -p
- 端口探测:nc -vz < 服务器IP> 3306 或 telnet < 服务器IP> 3306
- 日志定位
- MariaDB 错误日志:查看**/var/log/mysql/error.log**,可快速发现启动失败、权限拒绝、绑定地址等问题。
四 安全与最佳实践
- 避免直接用root@‘%’;为应用创建最小权限专用账户,并限制来源 host(如公司网段)。
- 仅在内网或受控网络开放 3306;公网访问建议使用SSH 隧道或跳板机,降低暴露面。
- 修改bind-address与授权后务必重启并复核日志;变更前做好配置与数据备份。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu MariaDB连接问题怎么排查
本文地址: https://pptw.com/jishu/786675.html
