掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
PostgreSQL數(shù)據(jù)庫(kù)中pg_hba.conf文件的使用是本文我們主要要介紹的內(nèi)容,因?yàn)樽罱囉肞ostgreSQL 9.04,將pg_hba.conf配置的一些心得分享。pg_hba.conf是客戶端認(rèn)證配置文件,定義如何認(rèn)證客戶端。

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

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流