PostgreSQL 13升级后Databricks Python数据接入报认证类型10不支持错误
解决PostgreSQL 13升级后"The authentication type 10 is not supported"报错
问题原因
PostgreSQL 10及以上版本默认启用了scram-sha-256认证机制(对应报错里的认证类型10),而你的Databricks任务使用的PostgreSQL驱动版本过低,不支持该认证方式。
解决方案
1. 升级PostgreSQL驱动(推荐方案)
Python psycopg2驱动:在Databricks任务中执行以下命令升级到支持
scram-sha-256的版本:%pip install --upgrade psycopg2-binary注意:psycopg2从2.8.0版本开始支持
scram-sha-256,确保安装的版本不低于此。JDBC驱动:如果你的任务使用JDBC连接PostgreSQL,需要将JDBC驱动升级到42.2.10及以上版本。在Databricks集群的"库"配置中,替换旧的postgreSQL JDBC jar为最新版本。
2. 修改PostgreSQL认证配置(临时兼容)
如果暂时无法升级驱动,可以修改PostgreSQL的pg_hba.conf文件,将对应客户端的认证方式改为旧的md5:
- 找到
pg_hba.conf文件(通常在PostgreSQL数据目录下),找到对应Databricks IP的配置行:
将host all all <databricks-ip-subnet> scram-sha-256scram-sha-256替换为md5:host all all <databricks-ip-subnet> md5 - 重载PostgreSQL配置(无需重启服务):
SELECT pg_reload_conf();
3. 更新用户密码哈希格式
如果选择保留scram-sha-256认证,需要确保你的数据库用户密码是SCRAM格式的哈希。执行以下SQL更新密码:
ALTER USER your_username WITH PASSWORD 'your_password';
此命令会自动将密码转换为SCRAM格式,配合升级后的驱动即可正常连接。
内容的提问来源于stack exchange,提问作者Anand Kulkarni
相关产品推荐
相关产品推荐

