Postgresql

如何禁用 Postgres 在 TCP 上的偵聽?

  • March 10, 2022

只是為了首先避免許多問題,我不希望我的 postgres 伺服器程序接受/收聽來自任何網路(即 TCP/IP 4/6)連接的任何內容。

我的設置是Ubuntu 12.04機器上的Postgres 9.1,我認為 tweeking不包括那些註釋掉的行(見下文)會導致 postgres “請不要在網路 TCP/IP 設備上收聽”/etc/postgresql/9.1/main/pg_hba.conf

本地所有 postgres 信任

# 類型數據庫使用者地址方法
# "local" 僅適用於 Unix 域套接字連接
#本地所有所有md5
# IPv4 本地連接:
#host all all 127.0.0.1/32 md5
# IPv6 本地連接:
#host all all ::1/128 md5

我也知道-i如果我們想在 TCP/IP 上監聽的話,有命令行來啟動 postgres 伺服器。我實際上在尋找相反的-???意思,不,請不要在 TCP/IP 上收聽。

我使用了 a netstat -utap | grep post ,它顯示除了我的設置之外的 postgres/etc/postgresql/9.1/main/pg_hba.conf仍在偵聽 TCP/IP。

我在這裡做錯了什麼?如何關閉我的 Postgres 伺服器的 TCP/IP 監聽狀態?只有 unix socket 監聽我很高興;)

謝謝

另外:我還認為 postgres 建立了與 this 的UDP連接,這127.0.0.1:38860將是什麼?

也許這不是我問題的最佳解決方案/答案,但至少它會指向任何人(面對我在原始問題中遇到的上述挑戰)

為了禁用對 TCP/IP 網路的監聽,我在啟動伺服器應用程序時使用了這個命令行選項:

postgres [other arguments] -c listen_addresses=''

補充:剩餘打開的 udp127.0.0.1:38860連接應該與postgresql.org上建議的統計收集器子程序的目的相關聯

簡單的答案;

更改listen_addresses 配置設置這是一個範例;

ALTER SYSTEM SET listen_addresses TO '';

然後重啟Postgresql服務

文件

如果列表為空,則伺服器根本不會偵聽任何 IP 介面,在這種情況下,只能使用 Unix 域套接字連接到它。

引用自:https://dba.stackexchange.com/questions/52306