使用psql命令基於udp(unix-domain-socket)協議連線postgresql資料庫
阿新 • • 發佈:2019-02-17
對於資料庫連線而言,通過netstat可以檢視當前連線協議,是udp還是tcp(包括ipv4和ipv6)。
實驗1:
如果本地直接使用psql命令連線,則為udp:
視窗1:
postgres@pgdb-> psql
psql (9.5.7)
Type "help" for help.
postgres=#
重新開一個視窗,看看psql連線協議
視窗2:
[root@pgdb ~]# netstat -anpo|grep psql //確認通過psql連線的協議
unix 3 [ ] STREAM CONNECTED 40742 5697 /psql
結論:可以看出來,通過該命令,區分連線的協議型別。
既然是udp協議,通過udp協議的連線,則被pg_hba.conf 中下面的item所管理:
# "local" is for Unix domain socket connections only
local all all trust
嘗試將以上item改為:
# "local" is for Unix domain socket connections only
local postgres postgres md5
然後過載下pg_hba.conf檔案
postgres@pgdb -> pg_ctl reload;
server signaled
這時候再連線,就會發現只允許postgres使用者連線postgres庫,並且需要密碼才能連線:
postgres@pgdb-> psql
Password:
當連線其餘庫時,則會報如下錯誤:
postgres@pgdb-> psql -d benchmarksql
psql: FATAL: no pg_hba.conf entry for host "[local]", user "postgres", database "benchmarksql"//不存在相關entry
Refer:
netstat命令用法參考連結:
關於UDP與TCP的關係:
By 獅子歌歌