1. 程式人生 > >使用psql命令基於udp(unix-domain-socket)協議連線postgresql資料庫

使用psql命令基於udp(unix-domain-socket)協議連線postgresql資料庫

對於資料庫連線而言,通過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 獅子歌歌