Ali*_*min 10 database authentication postgresql libpq
将项目移至生产环境后出现错误。用生产服务器运行时报错如下
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 位
sko*_*zen 94
对于那些使用基于 M1 的 Mac 且当前在 docker 中看到此问题的用户 - libpg 上游似乎存在一个错误,该错误是针对 ARM 上的错误库版本构建的。
在修复之前,解决方法是(在性能受到影响的情况下)通过 Rosetta 运行它。
export DOCKER_DEFAULT_PLATFORM=linux/amd64,并重新构建您的图像。
您将获得最新版本的 libpq,一切都应该可以正常工作。
参考: https: //github.com/psycopg/psycopg2/issues/1360
ihm*_*ihm 53
python:3.9我在运行我安装的 docker 映像时遇到了这个问题psycopg2-binary==2.9.3。安装psycopg2==2.9.3反而为我解决了这个问题。
zab*_*usa 31
对于亚马逊 Linux 用户:
$ sudo yum install -y amazon-linux-extras
Run Code Online (Sandbox Code Playgroud)
然后重新安装postgres客户端
$ sudo amazon-linux-extras install postgresql10
Run Code Online (Sandbox Code Playgroud)
然后主要部分安装 python 包,在我的例子中它是(psycopg2)重新安装它
$ pip3 install --force-reinstall psycopg2==2.9.3
Run Code Online (Sandbox Code Playgroud)
规格:python3.8.9
您的应用程序使用与 PostgreSQL 客户端 C 库链接的 API libpq。
该库的版本必须是 9.6 或更低版本,并且在 v10 中引入了 SCRAM 身份验证。
libpq 在应用程序端升级并重试。
如果您不需要scram-sha-256身份验证,则可以恢复为md5:
password_encryption = md5在postgresql.confmd5中pg_hba_conf小智 7
如果您想保留 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 install postgresql13
Run Code Online (Sandbox Code Playgroud)
这将更新服务器/客户端 libpq 以继续使用 scram-sha-256
小智 7
此问题仍然影响运行python:3.10.*docker 容器的 m1 mac(基于 aarch64 Debian 11)。对我来说,解决方案是安装psycopg2(从源代码构建),而不是psycopg2-binary建议在生产中安装:
pip install psycopg2
Run Code Online (Sandbox Code Playgroud)
python 容器已经拥有所有构建依赖项(如 gcc)。更适合生产的容器很可能不会有这些https://www.psycopg.org/docs/install.html#build-precessions
小智 6
我曾经碰到一个错误SCRAM认证要求的libpq版本10或以上 运行时php artisan migrate在laravel 8。然后,我固定它,如下所示:更改身份验证从scram-sha-256到md5,然后reset your password和restart the postgresql-x64-13 service这里是一步一步:
postgresql.conf中C:\Program Files\PostgreSQL\13\data,然后集password_encryption = md5pg_hba.conf,C:\Program Files\PostgreSQL\13\data然后全部更改METHOD为md5command line (cmd,cmder,git bash...)并运行psql -U postgres然后输入密码ALTER USER postgres WITH PASSWORD 'new-password'在命令行中运行来更改密码postgresql-x64-13在您的Service.小智 5
根据@meijsermans的回答,我更改了django的requirements.txt:
#psycopg2-binary>=2.9.3
psycopg2>=2.9.5
Run Code Online (Sandbox Code Playgroud)
并且它没有出现 SCRAM 错误!
还尝试了在 docker.compose 中使用和不使用platform: linux/arm64,但没有解决问题。
尝试platform: linux/amd64并出现一些不相关的错误(主要是“exec /bin/sh:exec格式错误”)在postgres容器中
使用图像和django图像postgres:14.5python:3.10.7
| 归档时间: |
|
| 查看次数: |
23568 次 |
| 最近记录: |