繁体   English   中英

我如何在没有密码的情况下从Apache中的脚本连接到本地Postgres数据库

[英]How do I connect to a local postgres database without password from a script within Apache

我有一个Python脚本,当POST请求发送到Apache Web服务器时,应该将一些数据加载到postgres中。 在脚本中,系统用户(dbuser)用于连接到数据库(与psql一起正常工作)。 但是,该脚本在Apache中执行时无法连接,返回以下错误:

Peer authentication failed for user dbuser

有没有办法允许脚本在不提供用户密码的情况下进行连接?

我找到的解决方案将身份验证与用户映射一起使用。

首先要注意的是,尽管脚本中提供了用户名,但通过Apache连接时,该用户仍用于对等身份验证(失败,需要密码)。 但是,请求访问postgresql的系统用户是运行Apache的系统用户(即www-data),因此使我们能够配置用户映射,从而允许将服务器身份验证为另一个系统用户(从而利用ident身份验证)。 以下是配置文件的内容:

在pg_ident.conf中,我们配置用户映射:

# MAPNAME      SYSTEM-USERNAME         PG-USERNAME
web            www-data                dbuser
web            dbuser                  dbuser

在pg_hba.conf中,我们将映射作为选项添加到本地对等身份验证中:

# "local" is for Unix domain socket connections only
# TYPE  DATABASE     USER    ADDRESS     METHOD
local   all          all                 peer map=web

重新加载服务器后,该脚本可以访问数据库,就好像该数据库是直接由用户“ dbuser”执行的一样,而无需输入密码。

尝试运行以下命令,它将使apache连接到数据库:

setsebool -P httpd_can_network_connect_db 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM