問題:客戶因為端口問題,服務連接服務器上的postgresql數據庫
?分析:使用 ss -tnl 命令查詢服務器網絡端口狀態
? ? ? ? ? ?1.服務器上的防火墻沒有設置5432端口好。http://www.cnblogs.com/moxiaoan/p/5683743.html
? ? ? ? ? ? 2.pg_hba.conf是客戶端認證配置文件?http://www.cnblogs.com/hiloves/archive/2011/08/20/2147043.html
? ? ? ? ? ? METHOD指定如何處理客戶端的認證。常用的有ident,md5,password,trust,reject。 ? ? ? ? ??
? ? ? ? ? ? ident是Linux下PostgreSQL默認的local認證方式,凡是能正確登錄服務器的操作系統用戶(注:不是數據庫用戶)就能使用本用戶映射的 ? ? ? ? ? ? ?數據庫用戶不需密碼登錄數據庫。用戶映射文件為pg_ident.conf,這個文件記錄著與操作系統用戶匹配的數據庫用戶,如果某操作系統用 ? ? ? ? ? ? ?戶在本文件中沒有映射用戶,則默認的映射數據庫用戶與操作系統用戶同名。比如,服務器上有名為user1的操作系統用戶,同時數據庫上 ? ? ? ? ? ?也有同名的數據庫用戶,user1登錄操作系統后可以直接輸入psql,以user1數據庫用戶身份登錄數據庫且不需密碼。很多初學者都會遇到 ? ? ? ? ? ? ? ? psql -U username登錄數據庫卻出現“username ident 認證失敗”的錯誤,明明數據庫用戶已經createuser。原因就在于此,使用了ident ? ? ? ? ?認證方式,卻沒有同名的操作系統用戶或沒有相應的映射用戶。解決方案:1、在pg_ident.conf中添加映射用戶;2、改變認證方式。
? ? ? ? ? ? md5是常用的密碼認證方式,如果你不使用ident,最好使用md5。密碼是以md5形式傳送給數據庫,較安全,且不需建立同名的操作系統用戶。
? ? ? ? ? ? 3.postgresql.conf 配置文件中:listen_addresses 監聽地址設置;
這個參數只有在啟動數據庫時,才能被設置。它指定數據庫用來監聽客戶端連接的TCP/IP地址。默認是值是* ,表示數據庫在啟動以后將在運行數據的機器上的所有的IP地址上監聽用戶請求(如果機器只有一個網卡,只有一個IP地址,有多個網卡的機器有多個 IP地址)。可以寫成機器的名字,也可以寫成IP地址,不同的值用逗號分開,例如,’server01’, ’140.87.171.49, 140.87.171.21’。如果被設成localhost,表示數據庫只能接受本地的客戶端連接請求,不能接受遠程的客戶端連接請求。? ? ? ? ? ?
結果:再次使用客戶端連接數據庫后,連接成功