一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Navicat如何连接Linux服务器上的MySQL

时间:2026-08-10 17:16:49 编辑:袖梨 来源:一聚教程网

Navicat成功连接Linux MySQL需同时满足三条件:网络可达、MySQL监听外部IP(bind-address=0.0.0.0)、用户具备远程权限(如naviuser@%并指定mysql_native_password插件);缺一即失败。

Navicat 能连上 Linux 上的 MySQL,前提是三个条件同时满足:Linux 服务器网络可达、MySQL 服务监听外部 IP、用户账号有远程访问权限。缺一不可,多数连接失败都卡在这三处中的某一个。

确认 Linux 服务器网络和端口是否通

别急着填 Navicat 表单,先在 Windows 上验证基础连通性:

  1. ping 测试能否到达服务器 IP(比如 ping 192.168.133.159),不通说明网络层有问题
  2. telnet 测试 3306 端口是否开放(telnet 192.168.133.159 3306),拒绝连接大概率是防火墙或 MySQL 未监听外部
  3. Linux 上检查防火墙:CentOS 7 用 systemctl status firewalld,Ubuntu 用 sudo ufw status;若开启,加规则 sudo firewall-cmd --add-port=3306/tcp --permanent 再重载,或临时关掉测试

修改 MySQL 配置允许远程访问

默认 MySQL 只监听 127.0.0.1,必须改配置文件让它接受外部连接:

  1. 找到配置文件位置:/etc/my.cnf/etc/mysql/mysql.conf.d/mysqld.cnf(Ubuntu)或 /etc/percona-server.conf.d/mysqld.cnf(Percona)
  2. 搜索 bind-address,注释掉 bind-address = 127.0.0.1 这行,改为 bind-address = 0.0.0.0
  3. 重启 MySQL:sudo systemctl restart mysqld(CentOS)或 sudo systemctl restart mysql(Ubuntu)
  4. 注意:生产环境不建议直接设为 0.0.0.0,应限制为具体 IP 段,比如 bind-address = 192.168.133.0/24

创建或授权远程登录用户

root 用户默认只允许本地登录,直接改 root 的 host 风险高,推荐新建专用用户:

  1. 登录 MySQL:mysql -u root -p,输入密码后执行:
  2. CREATE USER 'naviuser'@'%' IDENTIFIED BY 'StrongPass123!';
  3. GRANT ALL PRIVILEGES ON *.* TO 'naviuser'@'%';
  4. FLUSH PRIVILEGES;
  5. 如果是 MySQL 8.0+,还要指定认证插件:ALTER USER 'naviuser'@'%' IDENTIFIED WITH mysql_native_password BY 'StrongPass123!';
  6. 避免用 'root'@'%' —— 安全审计通常禁止 root 远程登录

Navicat 中填写连接参数的关键点

填错主机、端口或用户类型,测试连接会直接报错 Connection refusedAccess denied

  1. 「主机」填 Linux 服务器的 IP(不是 localhost127.0.0.1
  2. 「端口」默认是 3306,除非你启动容器时用了 -p 5506:3306 这类映射
  3. 「用户名」填上面创建的 naviuser,不是 root
  4. 如果 MySQL 在 Docker 容器里且没做端口映射,必须走 SSH 隧道 —— 此时 Navicat 的「SSH」选项卡要勾选,填服务器 SSH 信息,而「常规」里的「主机」填 127.0.0.1,端口填容器映射到宿主机的端口

最常被忽略的是 MySQL 8.0 的密码认证插件不兼容旧客户端,错误提示通常是 Authentication plugin 'caching_sha2_password' cannot be loaded —— 必须用 ALTER USER ... IDENTIFIED WITH mysql_native_password 显式切换,Navicat 才能握手成功。

热门栏目