因此,我正尝试使用PostgreSQL(https://diesel.rs/guides/getting-started/)来遵循柴油.rs教程。当我进入柴油设置步骤时,出现“不支持身份验证方法10”错误。我在Google上查询过此内容,但尚未找到任何解决方案。希望有人知道如何解决。谢谢。
答案 0 :(得分:1)
您必须将PostgreSQL客户端软件(在本例中为Rust驱动程序使用的libpq)升级到支持PostgreSQL v10中引入的scram-sha-256
身份验证方法的更高版本。
将PostgreSQL中的password_encryption
降级为md5
,更改所有密码并使用md5
身份验证方法是可能的,但是很糟糕。这需要更多的努力,并且您的安全性和旧的,有故障的软件也会变得更糟。
答案 1 :(得分:0)
这不是 Rust 特有的问题;该问题适用于连接到不支持 scram-sha-256 身份验证方法的 Postgres 数据库的任何应用程序。就我而言,是 Perl 应用程序连接到 Postgres 的问题。
这些步骤基于 on a post。
您需要安装最新的 Postgres 客户端。
在本例中,客户端 bin 目录 (SRC
) 是“C:\Program Files\PostgreSQL\13\bin”。目标 (TRG
) 目录是我的应用程序二进制文件的安装位置:“C:\Strawberry\c\bin”。我的应用程序在尝试连接 Postgres 数据库时失败,错误为“... 不支持身份验证方法 10 ...”。
set SRC=C:\Program Files\PostgreSQL\13\bin
set TRG=C:\Strawberry\c\bin
dir "%SRC%\libpq.dll" # to see the source DLL
dir "%TRG%\libpq__.dll" # to see the target DLL. Will be replaced from SRC
cp "%SRC%\libpq.dll" %TRG%\.
cd %TRG%
pexports libpq.dll > libpq.def
dlltool --dllname libpq.dll --def libpq.def --output-lib ..\lib\libpq.a
move "%TRG%"\libpq__.dll "%TRG%"\libpq__.dll_BUP # rename ORIGINAL name to BUP
move "%TRG%"\libpq.dll "%TRG%"\libpq__.dll # rename new DLL to ORIGINAL
此时我可以从 Perl 脚本成功连接到 Postgres。
上面显示的初始帖子还建议将其他 DLL 从源复制到目标:
libiconv-2.dll
libcrypto-1_1-x64.dll
libssl-1_1-x64.dll
libintl-8.dll
但是,我能够在不复制这些库的情况下解决我的问题。