新聞中心
PostgreSQL數(shù)據(jù)庫中pg_hba.conf文件的使用是本文我們主要要介紹的內(nèi)容,因為最近試用PostgreSQL 9.04,將pg_hba.conf配置的一些心得分享。pg_hba.conf是客戶端認證配置文件,定義如何認證客戶端。

創(chuàng)新互聯(lián)公司服務項目包括豐縣網(wǎng)站建設、豐縣網(wǎng)站制作、豐縣網(wǎng)頁制作以及豐縣網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,豐縣網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到豐縣省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
常用的pg_hba.conf配置:
- # TYPE DATABASE USER CIDR-ADDRESS METHOD
- # "local" is for Unix domain socket connections only
- local all all ident
- # IPv4 local connections:
- host all all 127.0.0.1/32 md5
- # IPv6 local connections:
- host all all ::1/128 md5
TYPE定義了多種連接PostgreSQL的方式,分別是:“l(fā)ocal”使用本地unix套接字,“host”使用TCP/IP連接(包括SSL和非SSL),“host”結(jié)合“IPv4地址”使用IPv4方式,結(jié)合“IPv6地址”則使用IPv6方式,“hostssl”只能使用SSL TCP/IP連接,“hostnossl”不能使用SSL TCP/IP連接。
DATABASE指定哪個數(shù)據(jù)庫,多個數(shù)據(jù)庫,庫名間以逗號分隔?!癮ll”只有在沒有其他的符合條目時才代表“所有”,如果有其他的符合條目則代表“除了該條之外的”,因為“all”的優(yōu)先級***。如下例:
- local db1 user1 reject
- local all all ident
這兩條都是指定local訪問方式,因為前一條指定了特定的數(shù)據(jù)庫db1,所以后一條的all代表的是除了db1之外的數(shù)據(jù)庫,同理用戶的all也是這個道理。
USER指定哪個數(shù)據(jù)庫用戶(PostgreSQL正規(guī)的叫法是角色,role)。多個用戶以逗號分隔。
CIDR-ADDRESS項local方式不必填寫,該項可以是IPv4地址或IPv6地址,可以定義某臺主機或某個網(wǎng)段。
METHOD指定如何處理客戶端的認證。常用的有ident,md5,password,trust,reject。
ident是Linux下PostgreSQL默認的local認證方式,凡是能正確登錄服務器的操作系統(tǒng)用戶(注:不是數(shù)據(jù)庫用戶)就能使用本用戶映射的數(shù)據(jù)庫用戶不需密碼登錄數(shù)據(jù)庫。用戶映射文件為pg_ident.conf,這個文件記錄著與操作系統(tǒng)用戶匹配的數(shù)據(jù)庫用戶,如果某操作系統(tǒng)用戶在本文件中沒有映射用戶,則默認的映射數(shù)據(jù)庫用戶與操作系統(tǒng)用戶同名。比如,服務器上有名為user1的操作系統(tǒng)用戶,同時數(shù)據(jù)庫上也有同名的數(shù)據(jù)庫用戶,user1登錄操作系統(tǒng)后可以直接輸入psql,以user1數(shù)據(jù)庫用戶身份登錄數(shù)據(jù)庫且不需密碼。
很多初學者都會遇到psql -U username登錄數(shù)據(jù)庫卻出現(xiàn)“username ident 認證失敗”的錯誤,明明數(shù)據(jù)庫用戶已經(jīng)createuser。原因就在于此,使用了ident認證方式,卻沒有同名的操作系統(tǒng)用戶或沒有相應的映射用戶。解決方案:1、在pg_ident.conf中添加映射用戶;2、改變認證方式。
md5是常用的密碼認證方式,如果你不使用ident,***使用md5。密碼是以md5形式傳送給數(shù)據(jù)庫,較安全,且不需建立同名的操作系統(tǒng)用戶。
password是以明文密碼傳送給數(shù)據(jù)庫,建議不要在生產(chǎn)環(huán)境中使用。
trust是只要知道數(shù)據(jù)庫用戶名就不需要密碼或ident就能登錄,建議不要在生產(chǎn)環(huán)境中使用。reject是拒絕認證。
本地使用psql登錄數(shù)據(jù)庫,是以unix套接字的方式,附合local方式。
使用PGAdmin3或php登錄數(shù)據(jù)庫,不論是否本地均是以TCP/IP方式,附合host方式。如果是本地(數(shù)據(jù)庫地址localhost),CIDR-ADDRESS則為127.0.0.1/32。
例如:
1、允許本地使用PGAdmin3登錄數(shù)據(jù)庫,數(shù)據(jù)庫地址localhost,用戶user1,數(shù)據(jù)庫user1db:
- host user1db user1 127.0.0.1/32 md5
2、允許10.1.1.0~10.1.1.255網(wǎng)段登錄數(shù)據(jù)庫:
- host all all 10.1.1.0/24 md5
3、信任192.168.1.10登錄數(shù)據(jù)庫:
- host all all 192.168.1.10/32 trust
pg_hba.conf修改后,使用pg_ctl reload重新讀取pg_hba.conf文件,如果pg_ctl找不到數(shù)據(jù)庫,則用-D /.../pgsql/data/ 指定數(shù)據(jù)庫目錄,或export PGDATA=/.../pgsql/data/ 導入環(huán)境變量。
需要注意的是:PostgreSQL默認只監(jiān)聽本地端口,用netstat -tuln只會看到“tcp 127.0.0.1:5432 LISTEN”。修改postgresql.conf中的listen_address=*,監(jiān)聽所有端口,這樣遠程才能通過TCP/IP登錄數(shù)據(jù)庫,用netstat -tuln會看到“tcp 0.0.0.0:5432 LISTEN”。
關(guān)于PostgreSQL數(shù)據(jù)庫中pg_hba.conf文件的使用的相關(guān)知識就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!
【編輯推薦】
- Oracle數(shù)據(jù)庫進程之從屬進程詳解
- Oracle數(shù)據(jù)庫進程之后臺進程詳解
- Oracle數(shù)據(jù)庫進程之服務器進程詳解
- Access 2010數(shù)據(jù)類型的相關(guān)知識詳解
- SQL Server數(shù)據(jù)庫托管代碼的使用詳解
本文題目:PostgreSQL數(shù)據(jù)庫中pg_hba.conf文件的使用詳解
鏈接分享:http://www.fisionsoft.com.cn/article/cdeepeh.html


咨詢
建站咨詢
