配置postgreSQL允許外部連接

  postgreSQL默認不允許外部連接,需要進行配置才行,postgreSQL版本是8.4.4。進入%postgreSQL_path%\8\data目錄,打開pg_hba.conf文件,找到下面這段:
 

# TYPE DATABASE    USER        CIDR-ADDRESS          METHOD

# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
#host    all         all         ::1/128                 md5

在# IPv4 下一系列的host增加一行:
host    all         all         192.168.80.1/24        md5
這行的意思是允許所有 192.168.80.*** 這樣ip訪問本機postgreSQL服務。這裏要說明一下,原有的
host    all         all         127.0.0.1/32          md5
這一行不要刪除
,我第一次配置時就因爲直接修改這行,然後導致postgreSQL服務無法啓動。而postgreSQL啓動失敗後,有很多postgres的進程無法自動關閉,使用任務管理器是無法手動把它們全部關閉的,因爲postgreSQL會自動開啓新的進程,經常你關了一個,它又打開了很多個。最後我是借用cports工具的“終止打開選中窗口的進程”功能,才把postgreSQL全部給關閉的。

      postgreSQL服務無法啓動,也有說解決方法如下:
修改本地鏈接屬性:
本地鏈接->屬性->Internet協議(TCP/IP)->屬性->常規 ->高級->WINS->啓動 LMHOSTS查詢
已選上則點去前面的鉤(如果沒有則勾上)。確定,確定,關閉。
然後你就會發現postgres服務可以啓動了。

原因是Dr.com的工作方式修改了Winsock LSP,致使postgres服務無法正常啓動。

postgres服務啓動後一直會開在那裏,期間可以正常使用Dr.com(彈出對話框不要選擇重啓),但是啓動重啓之後PostgreSQL又不能使用了。

遇到這種情況請重複以上步驟,勾上或者去掉“啓動 LMHOSTS查詢”前的鉤,改變狀態就行。
然後就又可以了。
      我遇到的問題不屬於這種情況,經測試無效。

同時修改postgresql.conf文件,
listen_addresses = '*'
我本機中默認就是如上配置,也就是我在安裝的時候就設置了允許所有地址。

配置說明:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
說明每一行有五個字段,
分別是:連接類型、可使用的數據庫名、使用者、DIDR地址、和驗證方法等五項。
下面,我只介紹一些針對每個字段常用的選項。

字段一:TYPE。
可以選擇:local或host。
前者只能允許本地的用戶登陸Postgres數據庫;後者可以接受遠程客戶登陸。所以,
我們應該使用“host”。

字段二:DATWABSE。
連接用戶可以使用的數據庫名字。可以使Postgres的一個具體的
數據庫名,也可以使用“all”來允許用戶訪問所有數據庫。

字段三:USER。可以指定某個具體的用戶來連接Postgres數據庫(還要結合後面的地址字段),
也可以使用“all”來允許所有用戶連接數據庫。

字段四:DIDR-ADDRESS。
是IP地址與掩碼的另一種表示方法。
Postgres是通過這個字段來了解,允許那些IP或IP網段連接此服務器。
它的格式是: IP地址/掩碼。
這個掩碼和子網掩碼是一個道理,只不過是用一個小於等於32的正數來表示,
表示的正是子網掩碼中高几位爲1,
比如,255.255.255.0 就是“24”,說明高24位是1。
192.168.0.1/32 相當於 IP爲192.168.0.1,子網掩碼爲255.255.255.255的網段,
很顯然,這隻表明192.168.0.1IP自己。

字段五:METHOD。
這是驗證方法。可選的有:
reject:拒絕這個IP的用戶訪問;
md5:密碼以md5作爲hash編碼;
password:密碼作爲明文傳輸(好恐怖!);
krb5:密碼以krb5作爲hash編碼。

下面舉一個例子,來說明如何進行設置:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
#允許IP爲192.168.0.1的所有用戶登陸到Postgres服務器的所有數據庫,採用md5驗證。
host all all 192.168.0.1/32 md5
#允許用戶testuser在192.168.0.XX的網段任意機器登陸Postgres服務器,
#只能使用數據庫testdb,採用md5驗證。
host testdb testuser 192.168.0.1/24 md5

2. 改監聽地址
默認下,POSTGRESQL只接受本地服務,要接受遠程服務,需改postgresql.conf 文件listen_address = *

3. 如果是在Linux上的PostgreSQL
要打開 “unix的tcpip套接子”。
編輯 $POSTGRES/data/postgresql.conf 文件,
將tcpip_socket=off改成tcpip_socket=on即可。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章