[英]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
檢查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
更多信息,您可以在文檔中找到。
然后你應該設置監聽特定端口。
你必須找到postgresql.conf
。 通常位於/etc/postgresql/9.1/main/postgresql.conf
) 文件並更改帶有 listen_address 的行:
#listen_address = ''
到(不要忘記刪除 # 這意味着評論):
listen_address = '*'
在每一步之后,您都應該重新啟動 Postgresql 服務:
sudo service postgresql restart
在第 2 步之后,您應該在 netstat 命令之后在偵聽地址中看到端口 5432(或 5433):
netstat -ntlp
之后,您必須在防火牆中為 PostgreSQL 打開端口:
sudo ufw allow 5432
您可以檢查防火牆設置(您應該在列表中看到 5432):
sudo ufw status
如果前面的任何步驟不起作用,您應該檢查 PostgreSQL 是否沒有在不同的端口(通常是 5433)上運行並重復前面的步驟。
當您有更多正在運行的 PostgreSQL 版本或升級數據庫而忘記停止以前版本的 PostgreSQL 時,這種情況經常發生。
如果您在查找配置文件時遇到問題,可以查看此線程我的 postgres *.conf 文件在哪里? .
如果您使用 GCP,請記住在 GCP 內設置防火牆規則以允許該端口,這可能會節省您幾個小時的調試時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.