使用 PSQL 遠端連線到另一個例項
本文介紹如何建立與另一個 PostgreSQL 例項的遠端連線。我們將帶你逐步完成整個旅程,並強調需要明確解釋的要點。
到 PostgreSQL 例項的遠端連線的初始設定
如果你首先嚐試從 COMPUTER 1
執行以下命令,你將收到錯誤訊息。
postgres=# psql -U postgres -h [ip addr. of Computer 2]
輸出:
psql: error: connection to server at "[ip addr. of Computer 2]", port 5432 failed: FATAL: no pg_hba.conf entry for host "[ip addr. of Computer 1]", user "postgres", database "postgres", no encryption
讓我們首先嚐試瞭解這裡發生了什麼。 -h [hostname]
指定執行資料庫伺服器的機器;因此,我們使用它來連線 PostgreSQL 的遠端機器資料庫。
它給出錯誤的原因是 pg_hba.conf
對我們的客戶端計算機沒有任何授權; COMPUTER 1
。這是客戶端授權配置檔案,它需要我們配置記錄以允許從 COMPUTER 1
進行遠端訪問。
檢查 PING TO [ip_addr of Computer 2]
是否在命令提示符下工作
在 CMD 中,鍵入以下命令。
ping [ip_addr of comp. 2]
如果你看到類似的內容。
這意味著從客戶端到伺服器的路由是開放的,反之亦然。我們將 IP 192.168.10.8
分配給 SERVER
並將 192.168.10.4
分配給 CLIENT
。
COMPUTER 1
現在指的是 CLIENT
,COMPUTER 2
指的是 SERVER
。例如,如果 PING
返回 REQUEST TIMED OUT
,請確保兩臺計算機上的埠都開啟並且網際網路連線正常。
轉到 SERVER COMPUTER (2)
並修改 Pg_hba.conf
檔案
你將能夠在 PostgreSQL 安裝的 data
資料夾中找到此檔案。或者對於預設安裝,路徑是:
C:\Program Files\PostgreSQL\14\bin (or any version number in case of 14)
現在編輯這個 pg_hba.conf
檔案並在 IPv4 Local Connections
標題下。
我們將在配置語句中新增 CLIENT
的 IP ADDRESS
。
host all all 192.168.10.4/24 md5
上面的 24
是指定的 CLIENT IP
的子網,METHOD
定義為 md5
。這將允許通過 md5
加密密碼進行身份驗證。
現在我們的第一步已經完成,我們可以繼續進行第二個最重要的步驟,即啟用遠端訪問。
轉到 postgresql.conf
檔案並更新設定
PostgreSQL 伺服器被指定為在預設初始設定中偵聽 localhost
地址或*
。但是,我們現在必須更改為遠端訪問提供的配置。
開啟 Data
資料夾中的 postgresql.conf
檔案,然後單擊 Edit
。開啟檔案後,在 CONNECTIONS AND AUTHENTICATION
下,查詢 listen_addresses = ''
。
如果你找到它,將其更改為以下內容。
listen_addresses = `192.168.10.4`
或者保留在*
。*
表示資料庫現在將接受所有傳入連線。
如果你只在此處填寫客戶端地址,則其他客戶端將無法連線,除非你也指定它們。因此,最好使用*
。
再一次,192.168.10.4
是我們的 CLIENT PC
,192.168.10.8
是我們的 SERVER PC
。根據需要更改提供給你的陳述中的地址。
你現在可以關閉檔案並重新啟動 PostgreSQL 伺服器以進行更改。
測試連線
回到 psql
命令提示符,再次嘗試此語句。
postgres-# psql -U postgres -h 192.168.10.8
然後它會要求你輸入 Postgres
的 PASSWORD
。請記住,此密碼適用於 SERVER
端的資料庫。
登入後,你現在可以訪問每個資料庫物件並根據需要執行查詢。
我們將研究你在設定遠端訪問時可能遇到的一些基本問題。
修改 PostgreSQL 中遠端訪問的 QUERY
語句
在某些情況下,特定命令可能不起作用;你也可以使用以下語句。
psql -h 192.168.10.8 -p 5432 -U postgres
我們還將 PORT
定義為 5432
,為我們的 PostgreSQL 安裝設定的預設 PORT
。
我們可以用來查詢的另一個語句可能是:
psql -h 192.168.10.8 -p 5432 -U postgres -W
這裡的 -W
要求 USER
提供密碼。但是,此方法可能不會在所有情況下都執行,並且可能會返回 CONNECTION
錯誤。
PostgreSQL 中的遠端訪問可以允許不同機器上的多個使用者訪問公共資料庫並執行查詢。但是,此連線可能經常被防火牆問題或埠關閉中斷,或者即使某些配置保持不變。
通常,無效的埠和訪問協議會阻止使用者訪問,並且許多使用者已經在其資料庫檔案中進行了預先存在的修改。
我們的更改是在具有乾淨檔案系統的系統上執行的,後端檔案沒有其他修改。因此,在某些特殊情況下,即使是我們的解決方案也不適合你。
確保你的版本是最新的,Windows 不會阻止遠端連線的任何重要訪問,或者你的路由啟用跨 LAN 通訊。
我們希望你學會了如何為 PostgreSQL 設定遠端訪問,並具備這樣做的基礎知識並在以後執行你的修改。
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub