postgreSQL的認證配置文件
pg_hba.conf
配置文件pg_hba.conf的位置
pg_hba.conf
可以出現在許多其他地方,具體取決於Pg的安裝方式。
通常情況下路徑為
/etc/postgresql/[VERSION]/main/pg_hba.conf
通過shell命令獲得(此命令必須使用同具有超級用戶權限的數據庫用戶名相同的操作系統用戶名,例如postgres,sudo su postgres)
psql -t -P format=unaligned -c 'show hba_file';
通過posqgreSQL控制台命令show hba_file獲得
postgres=# show hba_file; hba_file ------------------------------------- /etc/postgresql/12/main/pg_hba.conf (1 row)
配置文件的內容范例
# TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 ident # IPv6 local connections: host all all ::1/128 ident # Allow replication connections from localhost, by a user with the # replication privilege. local replication all peer host replication all 127.0.0.1/32 ident host replication all ::1/128 ident
認證方式詳解(METHOD)
1.trust
無條件地允許連接。這種方法允許任何可以與PostgreSQL數據庫服務器連接的主機以任意PostgreSQL數據庫用戶身份登入,而不需要口令或者其他任何認證。
當hba_file中的method為trust時,則hba_file中指定的IP主機可以以任何的數據庫用戶名登錄而不需要密碼
2.reject
無條件地拒絕連接。這有助於從一個組中"過濾出"特定主機,例如一個reject行可以阻塞一個特定的主機連接,而后面一行允許一個特定網絡中的其余主機進行連接。
3.md5
要求客戶端提供一個 MD5 加密的口令進行認證。
4.password
要求客戶端提供一個未加密的口令進行認證。因為口令是以明文形式在網絡上發送的,所以我們不應該在不可信的網絡上使用這種方式
5.ident
通過聯系客戶端的 ident 服務器獲取客戶端的操作系統名,並且檢查它是否匹配被請求的數據庫用戶名。Ident 認證只能在 TCIP/IP 連接上使用。當為本地連接指定這種認證方式時,將用 peer 認證來替代。
(遠程操作系統的當前用戶名和數據庫的用戶名一致時,可以直接使用此用戶名登錄而不需要密碼)
6.peer
從操作系統獲得客戶端的操作系統用戶,並且檢查它是否匹配被請求的數據庫用戶名。這只對本地連接可用。
(本地操作系統的當前用戶名和數據庫的用戶名一致時,可以直接使用此用戶名登錄而不需要密碼)
7. gss
用 GSSAPI 認證用戶。只對TCP/IP 連接可用。
8.sspi
用 SSPI 來認證用戶。只在Windows 上可用。
9.ldap
使用LDAP服務器認證。
10.radius
用 RADIUS 服務器認證。
11.cert
使用 SSL 客戶端證書認證。
12.pam
使用操作系統提供的可插入認證模塊服務(PAM)認證。
13.bsd
使用由操作系統提供的 BSD 認證服務進行認證。