如何將 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 則留言:
各位先進平安
小弟的平台是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所安裝的系統上操作的,應該沒有防火牆的問題)
先在此拜謝了
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的朋友別像我一樣做太多白工了
張貼留言