簡體   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