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

作者:瀚高PG实验室 (Highgo PG Lab)- 狮子歌歌

对于数据库连接而言,通过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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值