欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用psql命令基于udp(unix-domain-socket)协议连接postgresql数据库

程序员文章站 2022-03-15 16:33:14
...

对于数据库连接而言,通过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命令用法参考链接:

https://linux.cn/article-2434-1.html

https://segmentfault.com/a/1190000008633528

关于UDP与TCP的关系:

http://blog.csdn.net/li_ning_/article/details/52117463

By 狮子歌歌