1. 程式人生 > >postgresql客戶端命令之口令文件

postgresql客戶端命令之口令文件

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客戶端命令之口令文件