如何禁用 Postgres 在 TCP 上的偵聽?
只是為了首先避免許多問題,我不希望我的 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=''
補充:剩餘打開的 udp
127.0.0.1:38860
連接應該與postgresql.org上建議的統計收集器子程序的目的相關聯
簡單的答案;
更改listen_addresses 配置設置這是一個範例;
ALTER SYSTEM SET listen_addresses TO '';
然後重啟Postgresql服務
文件說
如果列表為空,則伺服器根本不會偵聽任何 IP 介面,在這種情況下,只能使用 Unix 域套接字連接到它。