macOS Catalina/BigSur多工具连接远程PostgreSQL失败问题求助
问题排查及解决方案
针对PgAdmin4、Postico报错「GSSAPI auth is not supported」的修复方案
- 优先修改连接配置禁用GSSAPI:在对应工具的PostgreSQL连接高级设置中,找到
gssencmode参数,将值设置为disable;如果没有可视化参数入口,直接在自定义连接参数栏追加gssencmode=disable即可。 - 若上述修改不生效,检查工具的PostgreSQL客户端依赖版本:部分旧版PgAdmin4/Postico内置的libpq没有编译GSSAPI支持,你可以直接升级到对应工具的最新稳定版,或者手动替换工具内置的libpq为系统中可正常运行psql的同版本libpq。
- 可选:如果你的PostgreSQL服务器没有强制要求GSSAPI加密,也可以在服务端pg_hba.conf中对应用户/IP的认证规则,将gss相关认证改为md5/scram-sha-256,优先修改客户端配置更稳妥。
针对DBViz、Oracle SQL Developer报错「需要有效客户端证书」的修复方案
- 这两款工具基于JDBC驱动访问PostgreSQL,不会主动读取
~/.postgresql路径下的证书,需要手动在JDBC连接串中显式指定证书路径、证书格式,标准带客户端证书的PG JDBC连接串模板如下:jdbc:postgresql://<host>:<port>/<dbname>?ssl=true&sslmode=verify-full&sslrootcert=/Users/你的用户名/.postgresql/root.crt&sslcert=/Users/你的用户名/.postgresql/postgresql.crt&sslkey=/Users/你的用户名/.postgresql/postgresql.pk8 - 注意密钥格式转换:JDBC驱动不支持PEM格式的密钥,需要先把你现有的postgresql.key转换为PKCS8格式,执行命令:
openssl pkcs8 -topk8 -inform PEM -outform DER -in ~/.postgresql/postgresql.key -out ~/.postgresql/postgresql.pk8 -nocrypt - 检查证书文件权限:JDBC驱动对证书权限要求严格,需要保证证书、密钥文件仅当前用户可读,执行命令修正权限:
chmod 600 ~/.postgresql/*
针对ODBC Manager、Excel连接失败的修复方案
- 你安装的psqlodbc默认不会自动加载
~/.postgresql下的配置,需要修改odbc.ini配置文件(路径一般为~/.odbc.ini或者/usr/local/etc/odbc.ini),在对应PG数据源的配置段追加以下参数:
[你的PG数据源名称] Driver = /usr/local/lib/psqlodbcw.so Servername = <PG服务器地址> Port = <端口> Database = <库名> UserName = <用户名> Password = <密码> SSLMode = verify-full SslRootCert = /Users/你的用户名/.postgresql/root.crt SslCert = /Users/你的用户名/.postgresql/postgresql.crt SslKey = /Users/你的用户名/.postgresql/postgresql.key GssEncMode = disable
- 修改完成后可以先用
isql <数据源名>测试连接,连通后再在Excel中选择对应ODBC数据源访问即可。
内容的提问来源于stack exchange,提问作者dragnblow
相关产品推荐
相关产品推荐

