kosmtik对接PostgreSQL报authentication method 10 not supported咨询
报错根因
Postgis Plugin: authentication method 10 not supported 本质是客户端与PostgreSQL服务端的身份认证协议不匹配:PostgreSQL 11及以上版本默认使用scram-sha-256作为身份认证方式,对应协议编号就是10,而kosmtik依赖的旧版Mapnik PostGIS插件绑定的libpq客户端版本低于10,原生不支持该认证协议,和localconfig.js、project.mml的业务配置逻辑无关。
实操解决方案
按优先级排序依次尝试即可:
- 方案一:调整PostgreSQL认证规则(本地开发场景首选,成功率最高)
- 定位PostgreSQL数据目录下的
pg_hba.conf配置文件,Debian/Ubuntu系默认路径为/etc/postgresql/<数据库版本号>/main/pg_hba.conf,Windows系统默认在PostgreSQL安装目录的data文件夹下。 - 找到本地连接、kosmtik访问网段对应的配置行,将行尾的
scram-sha-256替换为md5,本地开发环境直接修改本地socket、IPv4、IPv6回环地址的规则即可,修改后参考格式如下:local all all md5 host all all 127.0.0.1/32 md5 host all all ::1/128 md5 - 保存配置后重启PostgreSQL服务,重新为kosmtik使用的数据库账号设置一次密码(修改认证方式后必须重设密码,密码哈希才会以md5格式存储生效),在psql中执行如下SQL:
ALTER USER <你的数据库连接账号> WITH PASSWORD '<原账号密码>'; - 重启kosmtik重新发起连接即可。
- 定位PostgreSQL数据目录下的
- 方案二:升级kosmtik的PostGIS连接驱动(生产环境优先选)
若不希望降级数据库认证等级,进入kosmtik安装根目录,重新编译Mapnik模块使其绑定系统本地安装的新版libpq(要求系统本地libpq版本>=10,原生支持scram-sha-256),执行命令:
编译完成后重启kosmtik即可。npm rebuild mapnik --update-binary - 方案三:排查基础配置错误
核对localconfig.js、project.mml中配置的数据库连接参数,确认host、port、dbname、user、password字段填写正确,避免因端口填错连接到其他低版本PostgreSQL实例触发同类报错。
提示:本地开发环境使用md5认证不存在额外安全风险,若服务对公网暴露,不建议长期使用md5认证方式,优先走驱动升级方案。
内容的提问来源于stack exchange,提问作者VINICIUS SILVA FARIAS
相关产品推荐
相关产品推荐

