简体   繁体   English

无法让 PostgreSQL 9.4 侦听端口 5432

[英]Unable to get PostgreSQL 9.4 to listen on port 5432

I'm using a Linux VM (Ubuntu 15.10) to spin up a Postgres Database, and as far as I can tell, everything should be configured right.我正在使用 Linux VM (Ubuntu 15.10) 来启动 Postgres 数据库,据我所知,一切都应该正确配置。

My firewall is disabled:我的防火墙被禁用:

user@UBUNTUMACHINE:~$ sudo ufw status numbered Status: inactive

But it's only listening on port 22但它只监听端口 22

user@UBUNTUMACHINE:~$ netstat -an | grep "LISTEN "
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN

If I enable the firewall, and tell it to listen to 5432, it shows up in the rules:如果我启用防火墙,并告诉它监听 5432,它会显示在规则中:

user@UBUNTUMACHINE:~$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22                         ALLOW IN    Anywhere
22/tcp                     ALLOW IN    Anywhere
5432/tcp                   ALLOW IN    Anywhere
5432                       ALLOW IN    Anywhere
22 (v6)                    ALLOW IN    Anywhere (v6)
22/tcp (v6)                ALLOW IN    Anywhere (v6)
5432/tcp (v6)              ALLOW IN    Anywhere (v6)
5432 (v6)                  ALLOW IN    Anywhere (v6)

But I get the same results as above for netstat.但是我得到了与上述 netstat 相同的结果。

As far as I can tell from researching the issue, I have the correct values in my postgresql.conf file:据我研究这个问题可以看出,我的 postgresql.conf 文件中有正确的值:

#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*'          # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
port = 5432                             # (change requires restart)

and I've tried both IP ranges and specific IPs as trusted in the pg_hba.conf file.我已经尝试了 pg_hba.conf 文件中信任的 IP 范围和特定 IP。

# Database administrative login by Unix domain socket
local   all             postgres                                ident sameuser

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                               peer
#host    replication     postgres        127.0.0.1/32           md5
#host    replication     postgres        ::1/128                md5

host   all              all              10.0.0.0/255           trust
host   all              all              10.11.0.0/255          trust
host   all              all              0.0.0.0/0              trust

Lastly, Postgres is running, per最后,Postgres 正在运行,每

user@UBUNTUMACHINE:~$ sudo service postgresql status
● postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
   Active: active (exited) since Wed 2017-03-08 11:09:57 CST; 57min ago
  Process: 787 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 787 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/postgresql.service

Mar 08 11:09:57 UBUNTUMACHINEsystemd[1]: Starting PostgreSQL RDBMS...
Mar 08 11:09:57 UBUNTUMACHINEsystemd[1]: Started PostgreSQL RDBMS.
Mar 08 11:32:21 UBUNTUMACHINEsystemd[1]: Started PostgreSQL RDBMS.
Mar 08 11:32:26 UBUNTUMACHINEsystemd[1]: Started PostgreSQL RDBMS.
  • The log is telling me invalid CIDR mask in address 10.0.0.0/255日志告诉我地址​​ 10.0.0.0/255 中的 CIDR 掩码无效
  • :: 255 might be larger than 32 :: 255 可能大于 32

Postgres refuses to start, because it refuses the netmask /255 which islarger than the possible number of bits in the (32 bits) IP-address. Postgres 拒绝启动,因为它拒绝大于(32 位)IP 地址中可能的位数的网络掩码/255 You could consider this to be a bit picky for the .hba parser, but it could also be considerered a configuration error.您可能认为这对 .hba 解析器来说有点挑剔,但也可能被视为配置错误。

In any case: replace the /255 by something sensible, like /24 (or /16 , since you have two of these entries) And: replace the trust by something more safe, after it appears to work.在任何情况下:将/255替换为合理的内容,例如/24 (或/16 ,因为您有其中两个条目)并且:在trust似乎有效后,将其替换为更安全的内容。

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

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