You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法从Supabase项目执行pg_dump,遇GSSAPI协商错误求助

解决pg_dump连接Supabase Pooler时的GSSAPI协商错误

问题场景

  • pg_restore可正常运行,但pg_dump执行时抛出以下错误:

pg_dump: error: connection to server at "aws-0-ap-southeast-1.pooler.supabase.com" (52.74.252.201), port 5432 failed: received invalid response to GSSAPI negotiation: S

  • 初始使用的pg_dump命令:
    pg_dump postgres -h aws-0-ap-southeast-1.pooler.supabase.com -p 5432 -U postgres.[censored] -f pg_dumps/test_climbjios_prod_dump.dump -Fc

  • pg_dump版本:15.1

  • 此前PgAdmin 4遇到同类问题,通过添加SSL证书解决,但pg_dump添加SSL参数后仍报错:
    pg_dump -d 'sslmode=require sslcert=prod-ca-2021.crt host=aws-0-ap-southeast-1.pooler.supabase.com' -p 5432 -U postgres.[censored] -F c -f pgdumps/prod_dump_0803241509.dump

解决方案

1. 强制禁用GSSAPI认证

错误核心是pg_dump默认尝试GSSAPI认证,但Supabase Pooler不支持该方式,需显式禁用。在连接参数中添加gssencmode=disable即可跳过GSSAPI协商。

修正后的命令示例:

pg_dump postgres -h aws-0-ap-southeast-1.pooler.supabase.com -p 5432 -U postgres.[censored] -f pg_dumps/test_climbjios_prod_dump.dump -Fc -d 'sslmode=require gssencmode=disable'

或整合所有参数到连接字符串:

pg_dump -d 'dbname=postgres host=aws-0-ap-southeast-1.pooler.supabase.com port=5432 user=postgres.[censored] sslmode=require gssencmode=disable' -Fc -f pg_dumps/test_climbjios_prod_dump.dump

2. 确认SSL证书路径有效性

若指定sslcert参数,需确保证书文件路径为绝对路径,或pg_dump能识别的相对路径。建议用绝对路径测试:

pg_dump -d 'dbname=postgres host=aws-0-ap-southeast-1.pooler.supabase.com port=5432 user=postgres.[censored] sslmode=require sslcert=/完整路径/prod-ca-2021.crt gssencmode=disable' -Fc -f pg_dumps/test_climbjios_prod_dump.dump

3. 排查环境变量干扰

检查是否存在PGGSSENCMODE环境变量被设为prefer或require,这会强制客户端尝试GSSAPI认证。可临时取消该变量后再执行命令:

unset PGGSSENCMODE
# 重新执行pg_dump命令

补充说明

PgAdmin 4此前能解决问题,是因为其配置SSL后默认禁用了GSSAPI协商,而pg_dump默认会优先尝试该认证方式,因此必须显式添加禁用参数才能正常连接。

内容的提问来源于stack exchange,提问作者Nathan Tew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 11:22:53