Navicat连接服务器上的数据库,核心就是三件事:服务器放行端口、数据库账号允许远程登录、Navicat里填对主机和端口。 把这三步按顺序做完,再用“测试连接”验证,大多数问题当场就能定位。
连接前先把服务器这端准备好
Navicat只是客户端,它不负责“打开”服务器的门,门在服务器上,得先开对。
确认数据库监听地址和端口
SSH登录服务器:
ssh root@服务器公网IP
查看端口监听状态:
ss -tlnp | grep 3306
如果显示 0.0.1:3306,说明只允许本机连接;显示 0.0.0:3306 或 ::3306,才具备被远程连接的基础,MySQL配置文件通常在 /etc/mysql/mysql.conf.d/mysqld.cnf 或 /etc/my.cnf,把 bind-address 改成 0.0.0,再执行 systemctl restart mysql,PostgreSQL对应 postgresql.conf 里的 listen_addresses,SQL Server要在配置管理器里启用TCP/IP协议。
Navicat连接云服务器数据库需要开放哪些端口
常见默认端口:MySQL和MariaDB是3306,PostgreSQL是5432,SQL Server是1433,MongoDB是27017,Redis是6379,要放行两层:云厂商安全组入方向规则,以及服务器系统防火墙。
Ubuntu用ufw:
ufw allow 3306/tcp
ufw reload
CentOS用firewalld:
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload
安全组来源不要图省事填 0.0.0/0,可以限定公司或家里的公网IP,只是临时连接的话,SSH隧道更稳,只开22端口就行。
给远程账号授权,别拿root直接开公网
MySQL 8推荐先建用户再授权:
CREATE USER 'navicat_user'@'%' IDENTIFIED BY '强密码';
GRANT ALL PRIVILEGES ON 你的库名. TO 'navicat_user'@'%';
FLUSH PRIVILEGES;
表示允许任意主机登录,生产环境最好写成具体IP,老版本MySQL可以用 GRANT ... IDENTIFIED BY 一条完成,业内专家指出,远程连接的安全基线是最小权限加来源限制,而不是把root密码改复杂就完事。
Navicat连接远程MySQL数据库的完整步骤
常规选项卡:主机、端口、账号怎么填
打开Navicat,点“连接”选MySQL,其他数据库选对应类型,连接名自己认得就行,主机填服务器公网IP或域名,端口3306,用户名和密码填刚才授权的账号,编码选utf8mb4,填完点“测试连接”。
如果连的是云数据库RDS,主机填RDS提供的外网地址,端口一般也是3306,还要把本地公网IP加到RDS白名单。
本地Navicat连接简米云服务器数据库的稳妥方式:SSH隧道
数据库只监听127.0.0.1,或者不想把3306暴露到公网,用SSH隧道,在连接窗口切到“SSH”选项卡,勾选“使用SSH通道”,主机填服务器公网IP,端口22,用户名填能SSH登录的账号,验证方式选密码或私钥,回到“常规”选项卡,主机填 0.0.1,端口3306,再填数据库账号密码。
原理不复杂:Navicat先通过SSH登录服务器,再从服务器本机转发到数据库,简米云、酷番云、华为云的Linux服务器都适用,私钥格式注意,Navicat支持OpenSSH私钥,ppk文件需要先转换。
测试连接与命令行交叉验证
测试连接成功,双击连接能看到库表,右键“新建查询”执行 SELECT 1; 验证,如果Navicat报错但想确认是不是客户端问题,在本地终端跑:
mysql -h 服务器公网IP -P 3306 -u navicat_user -p
命令行能连、Navicat不能连,重点查Navicat的SSL设置、代理设置和版本兼容性。
Navicat连接服务器数据库失败怎么办:按报错码排查
2003或10060:网络不通或端口没放行
先 ping 服务器公网IP,再 telnet 服务器公网IP 3306 或 nc -zv 服务器公网IP 3306,不通就依次查安全组、系统防火墙、数据库监听地址,SSH能连、3306不通,基本卡在端口层。
1045:账号密码或授权主机不对
'user'@'localhost' 和 'user'@'%' 在MySQL里是两个账号,授权了前者不代表后者能登录,登录服务器执行:
SELECT user, host FROM mysql.user;
SHOW GRANTS FOR 'navicat_user'@'%';
MySQL 8默认认证插件是caching_sha2_password,旧版Navicat可能不兼容,升级Navicat或调整用户认证插件,密码里有特殊字符,注意在Navicat里原样填写,不要多加引号。
10038或超时:地址填错或隧道配置错
常见是把服务器内网IP当公网IP填,云服务器控制台里“公网IP”和“内网IP”是两列,别抄错,用SSH隧道时,常规选项卡主机要填 0.0.1,不是公网IP,还超时就临时关掉SSL试试,或者检查本地网络是否走了代理。
不同数据库的连接差异
| 数据库 | 默认端口 | 连接前重点检查 | 高频报错 |
|---|---|---|---|
| MySQL/MariaDB | 3306 | bind-address、用户host授权 | 1045、2003 |
| PostgreSQL | 5432 | postgresql.conf、pg_hba.conf | 认证失败、超时 |
| SQL Server | 1433 | 启用TCP/IP、混合身份验证 | 无法连接、登录失败 |
| MongoDB | 27017 | bindIp、认证库admin | 连接拒绝、认证失败 |
本地Navicat连接云服务器数据库和局域网连接有什么区别
云服务器走公网,必须过安全组,延迟受公网质量影响;局域网填内网IP即可,通常不需要额外放行,云数据库RDS还要配白名单,行业共识认为,能走内网或SSH隧道,就不要把数据库端口直接暴露在公网。
Navicat连接数据库需要付费吗:版本与成本怎么选
Navicat是商业软件,官方采用订阅制,按版本和授权方式收费,具体价格随渠道和活动变化,去官网查最准,Navicat Premium支持MySQL、PostgreSQL、SQL Server、MongoDB等多种数据库;Navicat for MySQL只针对MySQL;Lite版免费但功能受限,适合临时看表。
预算有限可以选DBeaver社区版、HeidiSQL、MySQL Workbench,连接远程数据库的基本能力都有,团队协作、数据同步、结构对比这些高级功能,才是Premium的差异点,选版本时先看自己连几种数据库,再看要不要定时备份和传输。
Q&A:Navicat连接服务器数据库常见疑问
Navicat连接服务器数据库需要在服务器上装Navicat吗?
不需要,Navicat是客户端软件,装在本地电脑;服务器上只需要运行数据库服务并允许远程连接,服务器装图形界面反而增加资源占用和安全面。
Navicat连接远程数据库安全吗?
公网直接开3306风险较高,更稳的做法是安全组限定来源IP、使用SSH隧道、给每个应用单独建账号并只授必要库权限、开启数据库日志审计,连接方式本身不决定安全,暴露面和权限配置才决定。
Navicat测试连接成功但看不到表是什么原因?
测试连接只验证网络和认证,能不能看到表由账号权限决定,执行 SHOW GRANTS FOR 'navicat_user'@'%'; 查看是否只给了USAGE,或者授权库名和实际库名不一致,补上对应库的SELECT等权限后执行 FLUSH PRIVILEGES;,再刷新连接。
Navicat连接服务器数据库并不神秘,先把服务器端口、账号授权、监听地址这三关过掉,再在客户端填对主机和端口,剩下的就是按报错码逐项排除。 连接方式选SSH隧道还是公网直连,取决于你对暴露面和便利性的取舍。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/793167.html


