pg初始化的數據庫默認認證方式為trust,該方式允許不輸入密碼即可登錄數據庫
trust認證的pg_hba.conf配置如下:
很明顯,不安全
新初始化了一個md5認證的數據庫(也可以直接修改已有數據庫配置)
./initdb -Upostgres -A md5 -D ../data1 -W
md5認證的pg_hba.conf配置如下:
啟動后登錄該數據庫就需要輸入密碼了
[postgres@mingfan bin]$ ./psql -Upostgres -dpostgres -p5433 Password for user postgres: psql (13.0) Type "help" for help. postgres=#
關於.pgpass
對數據庫的大多數訪問(包括psql程序)都通過libpq庫進行。該庫包含一項功能,如果指定一個名為.pgpass的文件(或PGPASSFILE引用的文件),則可以在其中放置以用戶身份連接所需的密碼。
好處:這允許通過諸如cron之類的機制自動執行日常管理任務。
.pgpass文件內容格式如下:
hostname:port:database:username:password
需要注意:
1、當密碼包含冒號(:)時,必須用反斜杠(\ :)進行轉義
2、字符“ *”可以匹配任何字段中的任何值(密碼除外)
3、如果設置了環境變量PGPASSWORD,則不會讀取〜/ .pgpass文件
4、Windows 7 64位上帶有空格的路徑的示例PGPASSFILE值:
設置PGPASSFILE = C:\ Program Files \ someapp \ pgpass.conf
5、請注意,環境變量值不得使用“(雙引號)
6、關於權限:在 Unix 系統上,口令文件上的權限必須不允許所有人或組內訪問,可以用chmod 0600 ~/.pgpass這樣的命令實現。如果權限沒有這么嚴格,該文件將被忽略。在Windows上,該文件被假定存儲在一個安全的目錄中,因此不會進行特別的權限檢查。
實例:
vim ~/.pgpass #寫入 localhost:5433:postgres:postgres:123456 #修改權限 chmod 0600 ~/.pgpass
檢查下
此時本地登錄數據庫就不需要密碼輸入了
[postgres@mingfan bin]$ ./psql -Upostgres -dpostgres -p54321 psql (13.0) Type "help" for help. postgres=#