navicat需用postgresql连接类型、显式设端口5439、启用ssl(require或verify-ca)、填正确endpoint/数据库名/用户名,并确保安全组放行5439端口且账户状态正常。
navicat 不能直接连接 amazon redshift —— 它必须走 postgresql 兼容协议,且必须用 postgresql 连接类型(不是 redshift),端口固定为 5439,不是默认的 5432。
为什么 Navicat 里选了 PostgreSQL 还连不上 Redshift
Redshift 是 PostgreSQL 协议兼容层,但不是 PostgreSQL 本身。Navicat 没有原生 Redshift 驱动,只能靠 libpq 兼容模式硬连,因此所有参数都得“假装是 PostgreSQL”,但细节处处是坑:
-
host必须填 Redshift 集群的 endpoint(形如mycluster.123456789012.us-east-1.redshift.amazonaws.com),不能填localhost或内网别名 -
port必须显式填5439—— 留空或填5432会直接报Connection refused -
database必须是 Redshift 集群创建时指定的初始库名(通常是dev),大小写敏感,且不能是postgres或空值 - 用户名必须是集群主用户(
masteruser)或已显式授权的账户;Redshift 不支持pg_hba.conf,权限全由 IAM + 集群安全组控制
SSL 是强制开关,disable 就会断连
Amazon Redshift 默认强制 SSL 加密,Navicat 若选 disable,连接瞬间中断,错误信息常为:server does not support SSL, but SSL was required 或空白超时。必须手动设为 require(不校验证书)或 verify-ca(需提供 sslrootcert 路径):
- 选
require:最快通过,适合开发/测试环境 - 选
verify-ca:需下载 AWS 根证书(global-bundle.pem),填入sslrootcert字段;生产环境推荐 - Redshift 不接受
verify-full—— 它的证书 CN 是 endpoint 域名,不是通配符,verify-full会因主机名不匹配失败
用户名密码对得上,还是报 password authentication failed
这不是 Navicat 输错了,而是 Redshift 的账户状态或网络策略拦住了:
- 检查安全组(Security Group):入站规则必须放行
TCP:5439到你的公网 IP 或公司出口 IP(不是 NAT 网关 IP) - 检查 VPC 路由表和 NACL:确保子网能出公网(若用公网 endpoint),或对等连接/VPC Endpoint 配置正确(若用私有 endpoint)
- 确认账户未被锁:Redshift 主用户密码重置后,旧连接会失效;非主用户需用
CREATE USER ... PASSWORD显式设密,不能复用 IAM 凭据 - Redshift 不支持 MD5 密码哈希 —— 如果你用的是旧版 Navicat(scram-sha-256 兼容模式(需 Redshift 1.0.30000+)
最易被忽略的一点:Redshift 的 database 名在创建集群时就固化,后续无法修改。很多人复制了 RDS 的习惯去连 postgres 库,或者误以为可以用 CREATE DATABASE 在已有集群里随便建库 —— 实际上 Redshift 只允许一个数据库(初始库),其他“库”只是 schema。连错库名,直接返回 FATAL: database "xxx" does not exist,而这个错误不会提示你该用哪个名。











