不支持PostgreSQL身份验证方法10

不支持PostgreSQL身份验证方法10,postgresql,rust,rust-diesel,Postgresql,Rust,Rust Diesel,我正试着跟着你走。当我进入Diesel设置步骤时,会出现“身份验证方法10不受支持”错误。如何解决此问题?您必须将PostgreSQL客户端软件(在本例中,Rust驱动程序使用的libpq)升级到支持PostgreSQL v10中引入的scram-sha-256身份验证方法的更高版本 将PostgreSQL中的password\u encryption降级为md5,更改所有密码并使用md5身份验证方法是一种可能的但不好的选择。这需要付出更多的努力,您会得到更差的安全性和旧的、有缺陷的软件。这不是

我正试着跟着你走。当我进入Diesel设置步骤时,会出现“身份验证方法10不受支持”错误。如何解决此问题?

您必须将PostgreSQL客户端软件(在本例中,Rust驱动程序使用的libpq)升级到支持PostgreSQL v10中引入的
scram-sha-256
身份验证方法的更高版本


将PostgreSQL中的
password\u encryption
降级为
md5
,更改所有密码并使用
md5
身份验证方法是一种可能的但不好的选择。这需要付出更多的努力,您会得到更差的安全性和旧的、有缺陷的软件。

这不是一个特定于生锈的问题;该问题适用于连接到不支持scram-sha-256身份验证方法的Postgres DB的任何应用程序。在我的例子中,连接到Postgres的Perl应用程序存在问题

这些步骤是基于

您需要安装最新的Postgres客户端。 在本例中,客户端bin目录(
SRC
)是“C:\Program Files\PostgreSQL\13\bin”。目标(
TRG
)目录是安装我的应用程序二进制文件的地方:“C:\草莓\C\bin”。我的应用程序在尝试连接Postgres DB时失败,错误为“…身份验证方法10不受支持…”

set SRC=C:\Program Files\PostgreSQL\13\bin
设置TRG=C:\草莓\C\bin
目录“%SRC%\libpq.dll”#以查看源dll
目录“%TRG%\libpq.dll”以查看目标dll。将由SRC替换
cp“%SRC%\libpq.dll”%TRG%\。
cd%TRG%
p导出libpq.dll>libpq.def
dlltool--dllname libpq.dll--def libpq.def--output lib..\lib\libpq.a
移动“%TRG%”\libpq\uuuuu.dll“%TRG%”\libpq\uuuuu.dll\u BUP#将原始名称重命名为BUP
移动“%TRG%”\libpq.dll“%TRG%”\libpq\uuuu.dll#将新dll重命名为原始dll
此时,我能够从Perl脚本成功地连接到Postgres

上面显示的初始帖子还建议将其他DLL从源复制到目标:

libiconv-2.dll
libcrypto-1_1-x64.dll
libssl-1_1-x64.dll
libintl-8.dll

但是,我能够在不复制这些库的情况下解决我的问题。

嗨,chasahodge!如果在出现错误时使用完整的错误消息和详细解释更新问题,可能会有所帮助。您正在服务器上使用的是不支持的过时客户端库it@a_horse_with_no_name(喜欢这个名字;我在吉他上学会的第一首歌曲之一):这就是全部错误信息。。谢谢你的帮助。我正在使用PostgreSQL 13。我更改了pg_hba.conf文件,将身份验证方法设置为trust,然后在postgresql.conf文件中将密码_加密设置为md5。这两个文件都位于/share/postgresql文件夹中。自从我编辑了这些文件后,我还没有更改密码,所以我现在就尝试一下,看看发生了什么。升级客户端软件。@chasahodge您解决了这个问题吗?这里的问题也是一样,升级为我解决了这个问题,谢谢。@Laurenzal您指的是客户端软件吗?我的同事使用[soft]在PostGIS中导入数据。我自己无法更新libs。如果我理解得很好,我要么用md5更改postgresql.conf和pg_hba.conf(pg13)中的方法,要么我们必须放弃我们以前使用的插件?