Ubuntu

除了本地主機,我無法讓 Postgres 監聽任何內容

  • September 16, 2018

我已經為此工作了好幾個小時,無法理解為什麼 Postgres 不會在 localhost 以外的任何內容上進行監聽。我在 Ubuntu 18.04 全新安裝 + Django、Postgres 和 nginx 上執行。一切正常。我現在正試圖讓外部數據庫訪問工作。我可以通過不是伺服器的外部 IP 從本地主機訪問使用者和數據庫。我已經多次檢查了listen_addresses 和主機條目,我什至不記得了。重新啟動 Postgres,檢查。重啟伺服器,檢查。是的,有防火牆在執行,但我什至無法使用 psql 和伺服器的 IP 登錄。如果我使用本地主機,我可以…

有人想到我還沒有嘗試過的東西嗎?

csadmin@BulletinBoardServer:~$ netstat -anpt |  grep LISTEN
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::80                   :::*                    LISTEN      -                   
tcp6       0      0 :::22                   :::*                    LISTEN      -                   
csadmin@BulletinBoardServer:~$ sudo tail -20 /etc/postgresql/10/main/pg_hba.conf
# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all     all     0.0.0.0/0       md5
#host    all             all             127.0.0.1/32            md5
#host    cs250phpdata    cs250student    96.***.47.54/0     md5
#host   cs250phpdata    cs250student    new***cs.com/0      md5
# IPv6 local connections:
host    all     all     ::/0            md5
#host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5
csadmin@BulletinBoardServer:~$ sudo cat /etc/postgresql/10/main/postgresql.conf |grep listen_
#listen_addresses = 'localhost'         # what IP address(es) to listen on;
listen_addresses = '*'          # Added 8/31/18 to allow external access.
csadmin@BulletinBoardServer:~$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp (OpenSSH)           ALLOW IN    Anywhere                  
80,443/tcp (Nginx Full)    ALLOW IN    Anywhere                  
5432                       ALLOW IN    Anywhere                  
22/tcp (OpenSSH (v6))      ALLOW IN    Anywhere (v6)             
80,443/tcp (Nginx Full (v6)) ALLOW IN    Anywhere (v6)             
5432 (v6)                  ALLOW IN    Anywhere (v6)             

csadmin@BulletinBoardServer:~$ 

我只是想確保這顯示為已解決。

我在不知不覺中安裝了 9.5 版和 10 版。我一直在編輯 10 版配置,但不知道這兩個版本都在執行。

sudo service postgresql stop
sudo pg_renamecluster 10 main main_pristine
sudo pg_upgradecluster 9.5 main
sudo service postgresql start
sudo pg_dropcluster 9.3 main

在開始之前,請確保您有 postgresql.conf 和 pg_hba.conf 文件的副本,因為當我進行升級時,這些文件已恢復到預設狀態。

現在很有意義為什麼我的配置更改沒有生效;-)

非常感謝 Colin ’t Hart 提供的寶貴線索!

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