2008-01-04

如何將 PostgreSQL 開放透過網路連線操作 ?

如何將 PostgreSQL 開放透過網路連線使用 ?
這是個好問題也是個很多初次進入 PostgreSQL 的朋友最大的困擾,
時常都有學生或者是網友提到這事件給小郭,
新年新希望整理這篇教學給大家參考 ...

首先必須告知您, 在初次安裝 PostgreSQL 後,
不論您使用的是那個平台的版本, 在預設的情況下,
PostgreSQL 是不允許透過 TCP/IP 網路進行連線的!
理由就是要降低不必要的資料庫系統網路安全性暴露的可能風險!

基於上述的理由, 在您進行以下的啟用時, 您應該更加注意您的系統安全知識 ...
首先依您的作業系統(OS)的平台, 找到如下的檔案位置:
Debian Linux: /etc/postgresql/8.2/main/postgresql.conf
Windows: C:\Program Files\postgresql\data\postgresql.conf
編輯變更如下圖的內容, 來允許接受網路連線
Listen addresses = '*'


再來 PostgreSQL 使用主機權限驗證基礎的文件檔要進行追加如下的內容
Debian Linux: /etc/postgresql/8.2/main/pg_hba.conf
Windows: C:\Program Files\postgresql\data\pg_hba.conf

以安全性的角度來說, 上述這行放寛成允許來自任何 IP 連線到任何的資料庫,
這並不是件好事, 不過您若僅是用在學習 PostgreSQL 到是件方便的理由...
最後的 md5 是密碼必須經過 md5 方式驗證通過後才能放行的意思

完成上面二個步驟後, 必須先重新啟動一次 PostgreSQL 伺服器

您以為您完成了嗎 ? 不

這張圖告訴您, 連線倒是成功了, 不過呢問題出在密碼驗證上 ...

在 Debian Linux 下使用套件進行安裝的 PostgreSQL,
postgres 這位 PostgreSQL 的超級使用者的密碼在資料庫裡是空的 @@"


在資料庫裡的系統資料表中有張表存放著真正的密碼 pg_shadow ,
你必須進行如圖的操作, 追加密碼


再來就靠各位的修練囉~ 歡迎您的加入 ^.^


延伸閱讀(Link):

2 則留言:

John Cheng 提到...

各位先進平安
小弟的平台是fedora core8
已照先文設定
==========================
1.postgresql.conf的listen_addresses='*'
2.pg_hba.conf的
host all all 0.0.0.0/0 md5
3.連入postgres資料庫,alter postgres password
=============================
可是在用"psql -h localhost mydb postgres"指令時,還是會遇到
"Ident驗證使用者"postgres"失敗"
的訊息,如果是直接用 pgsql mydb 就很正常,請問還少了什麼設定 ?
(以上的動作是直接ssh在db所安裝的系統上操作的,應該沒有防火牆的問題)
先在此拜謝了

John Cheng 提到...

ok,我已經找到問題所在了
答案是...fedora core8 下的rpm安裝版有兩個data所在
1./var/lib/pgsql/data
2 ./usr/share/pgsql/data
(第二個是自已手動加入,在initdb後會用到)
很巧的是我死命地踹第個目錄下的conf,忘了第一個目錄才是真的用到的設定所在
不過證入驗證方式,我不是用md5,是直接設定"password",畢竟那只是for localhost連結之用,
參考 http://www.ihao.org/ss/html/19/t-2219.html

希望有在i86 fedora的朋友別像我一樣做太多白工了

PostgreSQL & Google-Analytics Running...

::Planet PostgreSQL::

PostgreSQL Information Page

PostgreSQL日記(日本 石井達夫先生Blog)

PostgreSQL News

黑喵的家 - 資料庫相關

Google 網上論壇
PostgreSQL 8 DBA 專業指南中文版
書籍內容討論與更多下載區(造訪此群組)
目錄下載: PostgreSQL_8 _DBA_Index_zh_TW.pdf (更新:2007-05-18)

全球訪客分佈圖(Google)

全球訪客分佈圖(Google)