剛開始接觸postgresql,安裝後就有一個預設用戶postgres,而且在啟動postgresql後只能通過切換到linux的postgres用戶才能登錄資料庫進行操作,和Mysql的登錄認證居然不一樣。查了好多資料才知道,原來有個pg_hba.conf的配置文件作登錄限制。它的語法規則是這樣的 ...
剛開始接觸postgresql,安裝後就有一個預設用戶postgres,而且在啟動postgresql後只能通過切換到linux的postgres用戶才能登錄資料庫進行操作,和Mysql的登錄認證居然不一樣。查了好多資料才知道,原來有個pg_hba.conf的配置文件作登錄限制。它的語法規則是這樣的:
local database user auth-method [auth-options]
host database user address auth-method [auth-options]
hostssl database user address auth-method [auth-options]
hostnossl database user address auth-method [auth-options]
host database user IP-address IP-mask auth-method [auth-options]
hostssl database user IP-address IP-mask auth-method [auth-options]
hostnossl database user IP-address IP-mask auth-method [auth-options]
第一列是連接的方式,local是通過本地的unix socket連接,host是通過IP地址連接。第二列是目標資料庫,第三列是用戶。最後一列是認證方式(關鍵點),總共支持11種認證方式:
1. Trust Authentication
2. Password Authentication
3. GSSAPI Authentication
4. SSPI Authentication
5. Ident Authentication
6. Peer Authentication
7. LDAP Authentication
8. RADIUS Authentication
9. Certificate Authentication
10. PAM Authentication
11. BSD Authentication
其中最常見的就是peer,ident,password。
peer方式中,client必須和PostgreSQL在同一臺機器上,並且需要當前系統用戶和要登陸到PostgreSQL的用戶名相同,就可以登陸。
ident與peer類似,不過peer只能在PostgreSQL本地使用,ident則可以跨主機使用。
其實我們最常用的方式是通過密碼遠程登陸:
password認證分為三種方式:scram-sha-256、md5、password。
這三種方式都用密碼認證,區別是密碼在PostgreSQL上存儲的形式和登陸時密碼的傳輸形式。
如:# IPv4 local connections: host all all 127.0.0.1/32 md5
註意:修改了pg_hba.conf之後,需要重啟PostgreSQL,才會應用新配置。