psycopg2 介绍
psycopg2 是一款Postgresql的Python驱动包,是Postgresql官方唯一指定与支持的Python驱动,也是使用最广泛的、最稳定的Postgresql Python driver.
psycopg2在openGauss上的问题
由于openGauss 对原生Postgresql的通信协议进行了安全加固,这导致与Postgresql的默认通信协议互相不兼容了,因此,使用psycpog2 的Postgresql原生版本默认是不能连接openGauss的。会报类似下述错误:
通过修改GUC进行规避
涉及的GUC参数是password_encryption_type,Postgresql默认的加密方式是md5,由于md5已经不安全了,为了提高openGauss的安全能力,openGauss支持sha256, 并且默认是sha256的加密方式,这就导致了上述报错。但是openGauss并没有删除md5的加密和验证逻辑,因此,是可以通过修改该GUC参数开启md5加密方式的。
开启方法:
gs_guc reload -D $PGDATA -c "password_encryption_type = 1"
一定要在设置完上述参数后,再新建用户.
通过替换libpq解决问题
使用md5是存在一点点风险的,如果想要使用更安全的加密算法,则必须要替换Postgresql原生的libpq了。方法如下:
切换到psycopg2的安装目录中,一般是在/$PYTHONINSTALL/lib/pythonx.x/site-packages/psycopg2
将openGauss的lib目录下的libpq及相关依赖so文件拷过来,替换掉此处Postgresql原生的同名文件即可。
除手动替换之外,还可以在已经安装好openGauss的环境中通过psycopg2的源代码编译出包,这样经过编译的psycopg2包就会自带openGauss的libpq及其依赖文件,也更方便打包出包。
注意:
编译方法:
- 在环境中安装openGauss,并配置好环境变量;
- 下载psycopg2的源代码,切换到源代码根目录中;
- 执行 python setup.py build 命令
- 此时一般会报错,提示内容是版本校验不匹配,通过修改setup.py中的相应位置,把这个错屏蔽掉即可。也可以通过sed命令进行版本号替换(大约440行的位置):sed -i "s/(pgmajor, pgminor, pgpatch)/(9, 2, 4)/g" setup.py
- 再次执行步骤3;
欢迎访问openGauss官方网站
openGauss开源社区官方网站:
https://opengauss.org
openGauss组织仓库:
https://gitee.com/opengauss
openGauss镜像仓库:
https://github.com/opengauss-mirror
扫码关注我们
微信公众号|openGauss
微信社群小助手|openGauss-bot
本文分享自微信公众号 - openGauss(openGauss)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。