問題:客戶因?yàn)槎丝趩栴},服務(wù)連接服務(wù)器上的postgresql數(shù)據(jù)庫(kù)
?分析:使用 ss -tnl 命令查詢服務(wù)器網(wǎng)絡(luò)端口狀態(tài)

? ? ? ? ? ?1.服務(wù)器上的防火墻沒有設(shè)置5432端口好。http://www.cnblogs.com/moxiaoan/p/5683743.html
? ? ? ? ? ? 2.pg_hba.conf是客戶端認(rèn)證配置文件?http://www.cnblogs.com/hiloves/archive/2011/08/20/2147043.html

? ? ? ? ? ? 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)用 ? ? ? ? ? ? ?戶在本文件中沒有映射用戶,則默認(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)證方式,卻沒有同名的操作系統(tǒng)用戶或沒有相應(yīng)的映射用戶。解決方案:1、在pg_ident.conf中添加映射用戶;2、改變認(rèn)證方式。
? ? ? ? ? ? md5是常用的密碼認(rèn)證方式,如果你不使用ident,最好使用md5。密碼是以md5形式傳送給數(shù)據(jù)庫(kù),較安全,且不需建立同名的操作系統(tǒng)用戶。
? ? ? ? ? ? 3.postgresql.conf 配置文件中:listen_addresses 監(jiān)聽地址設(shè)置;
這個(gè)參數(shù)只有在啟動(dòng)數(shù)據(jù)庫(kù)時(shí),才能被設(shè)置。它指定數(shù)據(jù)庫(kù)用來(lái)監(jiān)聽客戶端連接的TCP/IP地址。默認(rèn)是值是* ,表示數(shù)據(jù)庫(kù)在啟動(dòng)以后將在運(yùn)行數(shù)據(jù)的機(jī)器上的所有的IP地址上監(jiān)聽用戶請(qǐng)求(如果機(jī)器只有一個(gè)網(wǎng)卡,只有一個(gè)IP地址,有多個(gè)網(wǎng)卡的機(jī)器有多個(gè) IP地址)??梢詫懗蓹C(jī)器的名字,也可以寫成IP地址,不同的值用逗號(hào)分開,例如,’server01’, ’140.87.171.49, 140.87.171.21’。如果被設(shè)成localhost,表示數(shù)據(jù)庫(kù)只能接受本地的客戶端連接請(qǐng)求,不能接受遠(yuǎn)程的客戶端連接請(qǐng)求。? ? ? ? ? ?

結(jié)果:再次使用客戶端連接數(shù)據(jù)庫(kù)后,連接成功
