設定用戶端串連PostgreSQL不要求輸入密碼

來源:互聯網
上載者:User

標籤:

平常工作中,有時需要遠端串連 PostgreSQL 資料庫做些維護,例如遠端備份等;如果備份指令碼寫在遠端機器,備份的時候會彈出密碼輸入提示,那麼指令碼就不能後台執行,這裡總結了幾種不彈出密碼輸入提示的方法。

--測試環境
目標庫IP:  192.168.1.25/5432 ; 資料庫: Mydb ;使用者名稱:postgres
用戶端IP:  192.168.1.26

--在 192.168.1.26  串連資料庫 Mydb , 彈出密碼提示
[email protected]> psql -h 192.168.1.25 -p 5432 Mydb postgres
Password for user postgres:

方法一:設定環境變數 PGPASSWORD 

PGPASSWORD  是 PostgreSQL 系統內容變數,在用戶端設定這後,那麼在用戶端串連遠端資料庫時,將優先使用這個密碼。

--測試
[email protected]> export PGPASSWORD=mypassword               

[email protected]> psql -h 192.168.1.25 -p 5432 Mydb postgres
psql (8.4.4)
Type "help" for help.                          
Mydb=> \q            

     備忘:設定環境變數  PGPASSWORD ,串連資料庫不再彈出密碼輸入提示。 但是從安全性方面考慮,這種方法並不推薦。

方法二:設定 .pgpass 密碼檔案

通過在用戶端 /home/postgres 目錄下建立隱藏檔案 .pgpass ,從而避免串連資料庫時彈出密碼輸入提示。

--建立密碼檔案 .pgpass ( on 用戶端 )     
vi /home/postgres/.pgpass       
--格式    
hostname:port:database:username:password                             
--範例    
192.168.1.25:5432:Mydb:postgres:mypassword                                   
--許可權          
Chmod 600 .pgpass                 

--串連測試
[email protected]> psql -h 192.168.1.25 -p 5432 Mydb postgres

psql (8.4.4)
Type "help" for help.                          
Mydb=>

備忘:在/home/postgres 目錄建立了密碼檔案 .pgpass 檔案後,並正確配置串連資訊,那麼用戶端串連資料時會優先使用 .pgass檔案, 並使用匹配記錄的密碼,從而不跳出密碼輸入提示,這種方法比方法一更安全,所以推薦使用建立 .pgpass 檔案方式。               

方法三:修改伺服器端 pg_hba.conf

修改認證檔案 $PGDATA/pg_hba.conf, 添加以下行, 並 reload使配置立即生效。
host    Mydb         postgres            192.168.0.0/24           trust

[[email protected]]$ pg_ctl reload -D $PGDATA / service postgresql reload
server signaled

--伺服器端 pg_hba.conf 的配置
# IPv4 local connections:
host    all             all                 127.0.0.1/32               trust
host    Mydb        postgres       192.168.0.0/24           trust
host    all             all                  0.0.0.0/0                    md5

--用戶端再次串連測試
[email protected]> psql -h 192.168.1.25 -p 5432 Mydb postgres

psql (8.4.4)
Type "help" for help.   

Mydb=> \q

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

引用官方說明文檔:

使用者家目錄中的 .pgpass 或者 PGPASSFILE 引用的檔案是一個可包含口令的檔案。如果串連要求口令(並且沒有用其它方法聲明口令),那麼可以用它。在 Microsoft Windows 上,檔案名稱字是 %APPDATA%\postgresql\pgpass.conf (這裡的 %APPDATA% 指使用者配置裡的 Application Data 子目錄)。

這個檔案應該有下面這樣的格式行:

hostname:port:database:username:password

頭四個欄位每個都可以是一個文本值,或者 *,它匹配所有的東西。第一個匹配當前串連參數的口令行的口令域將得以使用。(因此,如果你使用了萬用字元,那麼應該把最具體的記錄放在前面。)如果記錄包含 : 或者 \ ,應該用 \ 逃逸。一個 localhost 的主機名稱匹配來自原生 host(TCP)和 local (Unix 域通訊端)。

.pgpass 的許可權必須不允許任何全域或者同組的使用者訪問;我們可以用命令 chmod 0600 ~/.pgpass 實現這個目的。如果許可權比這個松,這個檔案將被忽略。(不過目前在 Microsoft Windows 上沒有檢查這個檔案的許可權。)

設定用戶端串連PostgreSQL不要求輸入密碼

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.