標籤:postgresql用戶端命令之口令檔案
postgresql用戶端命令之口令檔案:
在給出其它PostgreSQL用戶端命令之前,我們需要先介紹一下PostgreSQL中的口令檔案。之所以在這裡提前說明該檔案,是因為我們在後面的範例程式碼中會大量應用該檔案,從而保證我們的指令碼能夠自動化完成。換句話說,如果在用戶端命令執行時沒有提供該檔案,PostgreSQL的所有用戶端命令均會被口令輸入提示中斷。
在目前使用者的HOME目錄下,我們需要手工建立檔案名稱為 .pgpass的口令檔案,這樣就可以在我們串連PostgreSQL伺服器時,用戶端命令自動讀取該檔案已獲得登入時所需要的口令資訊。該檔案的格式如下:
hostname:port:database:username:password
以上資料是用冒號作為分隔字元,總共分為五個欄位,分別表示伺服器主機名稱(IP)、伺服器監聽的連接埠號碼、登入訪問的資料庫名、登入使用者名稱和密碼,其中前四個欄位都可以使用星號(*)來表示匹配任意值。見如下樣本:
/> cat > .pgpass
*:5432:postgres:postgres:123456
CTRL+D
#.pgpass檔案的許可權必須為0600,從而防止任何全域或者同組的使用者訪問,否則這個檔案將被忽略。
/> chmod 0600 .pgpass
在學習後面的用戶端命令之前,我們需要根據自己的應用環境手工建立該檔案,以便後面所有的範例程式碼都會用到該口令檔案,這樣它們就都可以以批處理的方式自動完成。
[[email protected] ~]$ cat .pgpass
127.0.0.1:3685:testdb2:testwjw:123456
[[email protected] ~]$ chmod 0600 .pgpass
[[email protected] ~]$ egrep "testdb2|testwjw" /data/postgresql/data/pg_hba.conf
host testdb2 testwjw 127.0.0.1/32 md5
[[email protected] ~]$ pg_ctl reload -D /data/postgresql/data -l /data/postgresql/log/postgres.log
server signaled
[[email protected] ~]$ psql -Utestwjw -d testdb2 -h 127.0.0.1 -p 3685 (這樣登陸是不要求輸入密碼的)
psql.bin (9.5.9)
Type "help" for help.
testdb2=>
一旦注釋掉.pgpass 這個檔案的內容
[[email protected] ~]$ cat .pgpass
##127.0.0.1:3685:testdb2:testwjw:123456
[[email protected] ~]$ pg_ctl reload -D /data/postgresql/data -l /data/postgresql/log/postgres.log
server signaled
[[email protected] ~]$ psql -Utestwjw -d testdb2 -h 127.0.0.1 -p 36985
Password for user testwjw: ####此處提示要輸入密碼123456
psql.bin (9.5.9)
Type "help" for help.
testdb2=>
本文出自 “10931853” 部落格,請務必保留此出處http://wujianwei.blog.51cto.com/10931853/1970731
postgresql用戶端命令之口令檔案