如何禁用 Postgres 监听 TCP?

hum*_*ace 6 postgresql ubuntu postgresql-9.1 tcpip

首先只是为了避免许多问题,我不希望我的 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 域套接字连接
#local all 所有 md5
# IPv4 本地连接:
#host all 所有 127.0.0.1/32 md5
# IPv6 本地连接:
#host all all ::1/128 md5

我也知道,-i如果我们 YES 想监听 TCP/IP ,有命令行可以启动 postgres 服务器。我实际上在寻找相反的东西,-???意思是不请不要听 TCP/IP。

我使用了 anetstat -utap | grep post 并且它表明除了我的设置之外的 postgres/etc/postgresql/9.1/main/pg_hba.conf仍在侦听 TCP/IP。

我在这里做错了什么?如何关闭 Postgres 服务器的这种 TCP/IP 侦听方式?只听 Unix 套接字,我很高兴;)

谢谢

另外:我也认为 postgres 建立了一个到 this的UDP连接,这127.0.0.1:38860会是什么?

hum*_*ace 6

也许这不是我问题的最佳解决方案/答案,但至少它会指出任何人(面对我在原始问题中遇到的上述挑战)

要禁用侦听 TCP/IP 网络,我在启动服务器应用程序时使用了这个命令行选项:

postgres [other arguments] -c listen_addresses=''

补充:剩余的开放 udp127.0.0.1:38860连接据说与postgresql.org 上建议的统计收集器子进程的目的相关联

  • 是的,必须使用`listen_addresses`,postgres 不会根据`pg_hba.conf` 中的规则猜测要侦听的接口。此外,更改`listen_addresses` 需要完全重启服务器,而更改`pg_hba.conf` 则需要简单的重新加载(后者对已建立的连接无害)。 (2认同)