簡體   English   中英

與 pgAdmin 的遠程 PostgreSQL 連接

[英]Remote PostgreSQL connection with pgAdmin

我正在嘗試通過基於 Ubuntu 16.04 的服務器上運行的 PostgreSQL 設置遠程連接。 到目前為止,當我點擊 pgAdmin 上的 Save 按鈕時,它有點凍結,什么也不做。 輸入.../manage.py runserver My_droplet_IP:5432后,我試了一下網頁,可以訪問。

創建 Droplet 后,我​​遵循了本教程。 https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-16-04

然后我編輯了settings.py; pg_hba.conf; postgresql.conf 文件

settings.py:

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresqlpsycopg2',
'NAME': '.....',
'USER': '....',
'PASSWORD': '....',
'HOST': '127.0.0.1',
'PORT': '5432',

STATICROOT = os.path.join(BASE_DIR, 'static/') - at the end of the page

而且,當然也用我的 droplet ip 更改了 ALLOWED HOSTS = ['....'] 。

postgresql.conf listen_address is set to '*'

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
# IPv6 local connections:
host    all             all             ::1/128                 md5

也允許防火牆,並破例5432被允許。

有任何想法嗎?

首先測試是否可以通過psql連接到數據庫:

psql -h ip_address -d name_of_the_database -U username

如果您收到連接拒絕錯誤,您必須設置錯誤並檢查如果遠程連接到 PostgreSQL 不起作用我應該檢查什么?

psql: could not connect to server: Connection refused Is the server running on host ip_address

如果遠程連接到 PostgreSQL 不起作用,我應該檢查什么?

  1. 檢查pg_hba.conf的身份驗證配置

    通常位於 linux - /etc/postgresql/version/main/pg_hba.conf 您應該允許對來自所有 IP 地址的特定 IP 的客戶端進行身份驗證:

     # 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 # IPv6 local connections: host all all ::0/0 md5 #all ips host all all all md5

    有關如何設置pg_hba.conf更多信息,您可以在文檔中找到。

  2. 然后你應該設置監聽特定端口。

    你必須找到postgresql.conf 通常位於/etc/postgresql/9.1/main/postgresql.conf ) 文件並更改帶有 listen_address 的行:

     #listen_address = ''

    到(不要忘記刪除 # 這意味着評論):

     listen_address = '*'
  3. 在每一步之后,您都應該重新啟動 Postgresql 服務:

     sudo service postgresql restart
  4. 在第 2 步之后,您應該在 netstat 命令之后在偵聽地址中看到端口 5432(或 5433):

     netstat -ntlp
  5. 之后,您必須在防火牆中為 PostgreSQL 打開端口:

     sudo ufw allow 5432

    您可以檢查防火牆設置(您應該在列表中看到 5432):

     sudo ufw status
  6. 如果前面的任何步驟不起作用,您應該檢查 PostgreSQL 是否沒有在不同的端口(通常是 5433)上運行並重復前面的步驟。

    當您有更多正在運行的 PostgreSQL 版本或升級數據庫而忘記停止以前版本的 PostgreSQL 時,這種情況經常發生。

如果您在查找配置文件時遇到問題,可以查看此線程我的 postgres *.conf 文件在哪里? .

如果您使用 GCP,請記住在 GCP 內設置防火牆規則以允許該端口,這可能會節省您幾個小時的調試時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM