幾種客戶端連接 PostgreSQL 不輸入密碼的方法

      平常工作中,有時需要異地連接 PostgreSQL 數據庫做些維護,例如異地備份等;
如果備份腳本寫在異地機器,備份的時候會彈出密碼輸入提示,那麼腳本就不能後臺執
行,這裏總結了幾種不彈出密碼輸入提示的方法。


--測試環境
目標庫IP:  192.168.1.25/1921 ; 數據庫 skytf
客戶端IP: 192.168.1.26

--在 192.168.1.26  連接數據庫 skytf , 彈出密碼提示
postgres@db6-> psql -h 192.168.1.25 -p 1921 skytf skytf
Password for user skytf:

 

方法一:設置環境變量 PGPASSWORD   

    PGPASSWORD  是 PostgreSQL 系統環境變量,在客戶端設置這後,那麼在客戶
端連接遠端數據庫時,將優先使用這個密碼。


--測試
postgres@db6-> export PGPASSWORD=skytf                

postgres@db6-> psql -h 192.168.1.25 -p 1921 skytf skytf
psql (9.1beta3, server 9.0.1)                          
WARNING: psql version 9.1, server version 9.0.         
         Some psql features might not work.            
Type "help" for help.                                  
                                                       
skytf=> \q             

     備註:設置環境變量  PGPASSWORD ,連接數據庫不再彈出密碼輸入提示。 但是從安全性
                方面考慮,這種方法並不推薦,


方法二:設置 .pgpass 密碼文件
       
       通過在客戶端 /home/postgres 目錄下創建隱藏文件 .pgpass ,從而避免連接
 數據庫時彈出密碼輸入提示。

--創建密碼文件 .pgpass ( on 客戶端 )                               
vi /home/postgres/.pgpass       
                                     
--格式                                                               
hostname:port:database:username:password                             
                                                                     
--範例                                                               
192.168.1.25:1921:skytf:skytf:skytf                                   
                                                                     
--權限                                                               
Chmod 600 .pgpass                  

--連接測試
postgres@db6-> psql -h 192.168.1.25 -p 1921 skytf skytf
psql (9.1beta3, server 9.0.1)
WARNING: psql version 9.1, server version 9.0.
         Some psql features might not work.
Type "help" for help.

skytf=>

      備註:在/home/postgres 目錄創建了密碼文件 .pgpass 文件後,並正確配置連接信息,
                那麼客戶端連接數據時會優先使用 .pgass文件, 並使用匹配記錄的密碼,從而
                不跳出密碼輸入提示,這種方法比方法一更安全,所以推薦使用創建 .pgpass 文
               件方式。                                

                               
方法三:修改服務端 pg_hba.conf

     修改認證文件 $PGDATA/pg_hba.conf, 添加以下行, 並 reload使配置立即生效。
     
host    skytf          skytf            172.16.3.174/32           trust

[postgres@192_168_1_26 pg_root]$ pg_ctl reload -D $PGDATA
server signaled

--服務端 pg_hba.conf 的配置
# IPv4 local connections:
host    all             all             127.0.0.1/32             trust
host    skytf          skytf            172.16.3.174/32           trust
host    all             all             0.0.0.0/0                md5

--客戶端再次連接測試
postgres@db6-> psql -h 192.168.1.25 -p 1921 skytf skytf
psql (9.1beta3, server 9.0.1)
WARNING: psql version 9.1, server version 9.0.
         Some psql features might not work.
Type "help" for help.

skytf=> \q

      備註:修改服務端 pg_hba.conf 並 reload 後,不再彈出密碼輸入提示。

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