温馨提示×

Ubuntu MariaDB连接问题怎么排查

小樊
39
2026-01-05 04:53:59
栏目: 云计算

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 认证

三 分步排查流程

  1. 服务与端口
  • 查看状态:sudo systemctl status mariadb;未运行则启动。
  • 监听端口:执行ss -lntp | grep 3306netstat -tulpen | grep 3306,确认 mysqld 在 0.0.0.0:3306127.0.0.1:3306 监听。
  1. 本地登录验证
  • 执行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;
  1. 远程连接三要素
  • 配置监听:编辑**/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 入站。
  1. 连通性测试
  • 本机:mysql -h 127.0.0.1 -P 3306 -u dbadmin -p
  • 远程:mysql -h <服务器IP> -P 3306 -u dbadmin -p
  • 端口探测:nc -vz <服务器IP> 3306telnet <服务器IP> 3306
  1. 日志定位
  • MariaDB 错误日志:查看**/var/log/mysql/error.log**,可快速发现启动失败、权限拒绝、绑定地址等问题。

四 安全与最佳实践

  • 避免直接用root@‘%’;为应用创建最小权限专用账户,并限制来源 host(如公司网段)。
  • 仅在内网或受控网络开放 3306;公网访问建议使用SSH 隧道或跳板机,降低暴露面。
  • 修改bind-address与授权后务必重启并复核日志;变更前做好配置与数据备份。

0