PostgreSQL 自動輸入密碼

來源:互聯網
上載者:User

標籤:linux   postgres   res   實現   target   符號   blank   包含   inux   

原文:https://www.cnblogs.com/litmmp/p/5122534.html

在 Shell 命令列中,使用 postgresql-client 串連 PostgreSQL 資料庫時,每次都要輸入密碼。如果要寫 Shell Script,做一些類似於備份的自動化管理工作,每次都還要手動輸入密碼是一件讓人很不爽的事情,也沒有實現真正意義上的自動化。

 

何如在串連 PostgreSQL 資料庫時,不用手動輸入密碼,官方利用密碼檔案(Password File)提供了一種解決方案:

Unix/Linux 在使用者家目錄建立一個 .pgpass 隱藏檔案或者是建立一個環境變數 PGPASSFILE 引用一個含有密碼資訊的檔案(檔案內容同 .pgpass 檔案,此處檔案名稱可隨意,隱不隱藏都行),Windows 對應的是 %APPDATA%\postgresql\pgpass.conf 檔案( %APPDATA% 是使用者配置裡面的 Application Data 子目錄)。

該檔案記錄著串連資料庫需要的所有資訊,按下面資料格式,每行一條記錄資訊:

hostname:port:database:username:password

該檔案中可以有注釋內容,注釋符號是 # 。

前四個欄位可以是確定的字面值,也可以使用萬用字元 * 匹配所有。

串連資料庫的時候,系統自動從前到後遍曆該檔案,使用最先匹配到的記錄,因此,當你在檔案中使用了萬用字元 * 的時候,應該優先把最具體的資訊放在檔案的最前面。

如果記錄資訊中包含 : 或 \ 這兩個符號,需要對其進行轉義,就是在字元前面加轉義符號 \ 。

 

在 Unix/Linux 系統中 .pgpass 檔案許可權只能對使用者自己開放,不能對使用者組和其他人開放,就是說 .pgpass 檔案對使用者組和其他人是"不可讀,不可寫,不可執行"的,通常會賦予 .pgpass 檔案許可權 600 ,命令如下:

chmod 0600 ~/.pgpass

如果任何一個許可權對使用者組或其他人開放了,該檔案就會被忽略。

利用環境變數 PGPASSFILE 引用的檔案許可權也要滿足這個要求,否則同樣會被忽略。

在 Windows 中,會假設該檔案存放在一個安全的目錄中,所有沒有對其許可權進行特別的檢查。

 

至此,資料庫對應的 .pgpass 檔案設定完成,以後再串連資料庫就不需要手動輸入密碼了,Shell Script 也能夠實現真正意義上的自動化管理。

psql -h 10.150.10.150 -p 5432 -U postgres -d dbname  -- 到.pgpass檔案中尋找匹配資訊,如果沒有,依然需要手動輸入密碼

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.