如何解决 Postgresql SCRAM 身份验证问题?
How can I solve Postgresql SCRAM authentifcation problem?
将项目移至生产环境后出现错误。 while 运行 production server
报错如下
pg_connect(): 无法连接到 PostgreSQL 服务器:SCRAM 身份验证需要 libpq 版本 10 或更高版本。
这是我的 postgreSQL 版本:
开发版本:
x86_64-pc-linux-gnu 上的 PostgreSQL 11.5,由 gcc (GCC) 4.8.5 20150623 编译
(Red Hat 4.8.5-36),64 位
正式版:
x86_64-pc-linux-gnu 上的 PostgreSQL 11.5 (EnterpriseDB Advanced Server 11.5.12),由 gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36) 编译,64 位
您的应用程序使用与 PostgreSQL 客户端 C 库 libpq
链接的 API。
该库的版本必须为 9.6 或更早版本,并且在 v10 中引入了 SCRAM 身份验证。
在应用程序端升级libpq
然后重试。
如果您不需要 scram-sha-256
身份验证,您可以恢复为 md5
:
- 在
postgresql.conf
中设置password_encryption = md5
- 在
pg_hba_conf
中将身份验证方法更改为 md5
- 重新加载 PostgreSQL
- 修改用户密码获取MD5加密密码
遇到了同样的问题并应用了@Laurenz Albe 的修复程序,但由于加密策略更改,我的数据库用户会收到身份验证错误。
因此,不要将 scram-sha-256
替换为 md5
,而是将其替换为 pg_hba.conf
中的 trust
我曾经得到一个错误 SCRAM 身份验证需要 libpq 版本 10 或更高版本 当 运行ning php artisan migrate
在 laravel 8
。然后我按如下方式修复它:将身份验证从 scram-sha-256
更改为 md5
,然后是 reset your password
和 restart the postgresql-x64-13 service
,这里是一步一步的:
- 步骤 1: 在
C:\Program Files\PostgreSQL\data
中找到文件 postgresql.conf
然后设置 password_encryption = md5
- 步骤 2:在
C:\Program Files\PostgreSQL\data
中找到文件 pg_hba.conf
然后将所有 METHOD
更改为 md5
- 第三步:打开
command line (cmd,cmder,git bash...)
和运行psql -U postgres
然后输入安装postgres时的密码sql
- 第 4 步:然后在命令行 运行
ALTER USER postgres WITH PASSWORD 'new-password'
中更改密码
- 最终:在您的
Service
. 中重新启动服务 postgresql-x64-13
如果您想保留 scram-sha-256 以确保安全。您需要更新您的客户端 postgreSQL 库,因为 php-pgsql
默认版本不支持它。
CentOS/Rhel/Rocky
yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum instal postgresql13
这将更新 server/client libpq 以便继续使用 scram-sha-256
RUN apt-get -y update \
&& apt-get install -y build-essential gettext libpq-dev\
&& apt-get install -y wkhtmltopdf\
&& apt-get install -y gdal-bin\
&& apt-get install -y libgdal-dev\
&& apt-get install -y --no-install-recommends software-properties-common\
&& apt-add-repository contrib\
&& apt-get update
试试这个。
对于当前在 docker 中看到此问题的基于 M1 mac 的用户 - libpg 上游似乎存在错误,该错误针对 ARM 上的错误库版本构建。
在它被修复之前,解决方法是(在性能上)只是 run it via rosetta。
export DOCKER_DEFAULT_PLATFORM=linux/amd64
,并重新构建您的图像。
您将获得最新版本的 libpq,一切正常。
我 运行 进入这个,而 运行 我安装 psycopg2-binary==2.9.3
的 python:3.9
docker 图像。安装 psycopg2==2.9.3
而不是为我解决了它。
将项目移至生产环境后出现错误。 while 运行 production server
报错如下pg_connect(): 无法连接到 PostgreSQL 服务器:SCRAM 身份验证需要 libpq 版本 10 或更高版本。
这是我的 postgreSQL 版本:
开发版本:
x86_64-pc-linux-gnu 上的 PostgreSQL 11.5,由 gcc (GCC) 4.8.5 20150623 编译 (Red Hat 4.8.5-36),64 位
正式版:
x86_64-pc-linux-gnu 上的 PostgreSQL 11.5 (EnterpriseDB Advanced Server 11.5.12),由 gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36) 编译,64 位
您的应用程序使用与 PostgreSQL 客户端 C 库 libpq
链接的 API。
该库的版本必须为 9.6 或更早版本,并且在 v10 中引入了 SCRAM 身份验证。
在应用程序端升级libpq
然后重试。
如果您不需要 scram-sha-256
身份验证,您可以恢复为 md5
:
- 在
postgresql.conf
中设置 - 在
pg_hba_conf
中将身份验证方法更改为 - 重新加载 PostgreSQL
- 修改用户密码获取MD5加密密码
password_encryption = md5
md5
遇到了同样的问题并应用了@Laurenz Albe 的修复程序,但由于加密策略更改,我的数据库用户会收到身份验证错误。
因此,不要将 scram-sha-256
替换为 md5
,而是将其替换为 pg_hba.conf
trust
我曾经得到一个错误 SCRAM 身份验证需要 libpq 版本 10 或更高版本 当 运行ning php artisan migrate
在 laravel 8
。然后我按如下方式修复它:将身份验证从 scram-sha-256
更改为 md5
,然后是 reset your password
和 restart the postgresql-x64-13 service
,这里是一步一步的:
- 步骤 1: 在
C:\Program Files\PostgreSQL\data
中找到文件postgresql.conf
然后设置password_encryption = md5
- 步骤 2:在
C:\Program Files\PostgreSQL\data
中找到文件pg_hba.conf
然后将所有METHOD
更改为md5
- 第三步:打开
command line (cmd,cmder,git bash...)
和运行psql -U postgres
然后输入安装postgres时的密码sql - 第 4 步:然后在命令行 运行
ALTER USER postgres WITH PASSWORD 'new-password'
中更改密码 - 最终:在您的
Service
. 中重新启动服务
postgresql-x64-13
如果您想保留 scram-sha-256 以确保安全。您需要更新您的客户端 postgreSQL 库,因为 php-pgsql
默认版本不支持它。
CentOS/Rhel/Rocky
yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum instal postgresql13
这将更新 server/client libpq 以便继续使用 scram-sha-256
RUN apt-get -y update \
&& apt-get install -y build-essential gettext libpq-dev\
&& apt-get install -y wkhtmltopdf\
&& apt-get install -y gdal-bin\
&& apt-get install -y libgdal-dev\
&& apt-get install -y --no-install-recommends software-properties-common\
&& apt-add-repository contrib\
&& apt-get update
试试这个。
对于当前在 docker 中看到此问题的基于 M1 mac 的用户 - libpg 上游似乎存在错误,该错误针对 ARM 上的错误库版本构建。
在它被修复之前,解决方法是(在性能上)只是 run it via rosetta。
export DOCKER_DEFAULT_PLATFORM=linux/amd64
,并重新构建您的图像。
您将获得最新版本的 libpq,一切正常。
我 运行 进入这个,而 运行 我安装 psycopg2-binary==2.9.3
的 python:3.9
docker 图像。安装 psycopg2==2.9.3
而不是为我解决了它。