您的位置:首页 > 数据库

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

2017-11-27 10:39 633 查看
对于数据库连接而言,通过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 狮子歌歌
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  pg-hba psql udp tcp postgresql