Navicat 16 可连接 Google Cloud SQL(MySQL/PostgreSQL),但需开启公网 IP、配置白名单、正确设置 SSL(PostgreSQL 必选 sslmode=require)、用户名不带 @ 符号,且不可直连 Cloud Spanner 或误判 SQL Server 实例。
navicat 16 可以连接 google cloud sql(mysql/postgresql),但必须走公网 ip + 白名单 + 正确认证路径;直接填实例名、用默认端口、不配网络权限,100% 连不上。
Google Cloud SQL 实例必须开启公网 IP 并配置 IPv4 白名单
Cloud SQL 默认只提供私有 IP(VPC 内访问),Navicat 是本地桌面工具,只能走公网。你得手动打开「连接」→「网络」→「公共 IP 地址」开关,并在「授权网络」里添加你的本地出口 IP。
- 别信“自动检测 IP”——
http://ipv4.whatismyv6.com/才准,NAT 后的局域网 IP(如192.168.x.x)填了也白填 - 如果用的是动态 IP(比如家用宽带),建议加一段 CIDR(如
203.0.113.0/28),否则换一次 IP 就断连 - PostgreSQL 实例还要额外确认:是否已启用
ssl_mode=required?Navicat 16 默认不强制 SSL,但 Cloud SQL PostgreSQL 要求必须加密传输
Navicat 16 连接 MySQL 实例时,“用户名”不能带 @ 符号
Cloud SQL 创建用户时支持格式如 myuser@% 或 myuser@localhost,但 Navicat 的 MySQL 连接框只认纯用户名(即 myuser)。填完整带 @ 的会报错:Access denied for user 'myuser@%'@'xxx.xxx.xxx.xxx'。
- 创建用户时,优先用无 host 后缀的写法:
CREATE USER 'myuser' IDENTIFIED BY 'mypass'; - 如果已有带
@%的用户,Navicat 连接时仍只填myuser,不要补全 - 密码输错或用户没赋权会导致
Authentication plugin 'caching_sha2_password' cannot be loaded—— 这不是插件问题,是账号根本没权限或密码错
PostgreSQL 实例需手动指定 sslmode=require,且不能依赖 Navicat 自动探测
Navicat 16 对 PostgreSQL 的 SSL 配置藏得深,默认不启用加密,而 Cloud SQL PostgreSQL 强制要求 TLS。不设 sslmode=require,连接会卡在「Testing connection…」然后超时。
- 在 Navicat 新建连接 → 「高级」选项卡 → 勾选「Use SSL」→ 在「SSL Mode」下拉中选
require - 不用填 CA 证书路径:Cloud SQL 的公共根证书已内置在系统信任链里,Navicat 能自动验证
- 如果还报
no pg_hba.conf entry,说明用户没被授予远程登录权限,回 Cloud Console 的「用户」页,确认该用户 host 设置为%或对应 IP 段
别试 Navicat 直连 Cloud Spanner 或 SQL Server 实例
Navicat 16 官方不支持 Cloud Spanner(无 JDBC/ODBC 驱动映射其 gRPC 协议),所谓「PostgreSQL 兼容模式」只是发 SELECT * FROM pg_tables,Spanner 根本没有这张表,必报错 Table not found: pg_tables。
SQL Server 实例若托管在 Cloud SQL 上(目前 GCP 不提供 SQL Server 版 Cloud SQL),那属于误判;若你连的是 Azure SQL 或自建 Windows Server + SQL Server,则要用 xxx.xxx.xxx.xxx\INSTANCENAME 格式填主机,且确保 SQL Server 已启用 TCP/IP 协议和混合认证。
真正容易被忽略的点是:Cloud SQL 的「数据库名称」字段在 Navicat 里不是可选项——留空也能连,但一旦填错(比如填了不存在的库名),首次连接就会失败,而不是连上后再选库。先连通再建库,比硬塞一个名字靠谱得多。



















