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

来源:互联网 发布:死亡扳机2机枪 mac 编辑:程序博客网 时间:2024/05/19 16:03

对于数据库连接而言,通过netstat可以查看当前连接协议,是udp还是tcp(包括ipv4和ipv6)。

实验1:

如果本地直接使用psql命令连接,则为udp:

窗口1:postgres@pgdb-> psqlpsql (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 onlylocal   all             all                                     trust尝试将以上item改为:# "local" is for Unix domain socket connections onlylocal   postgres         postgres                               md5  然后重载下pg_hba.conf文件postgres@pgdb-> pg_ctl reload;server signaled这时候再连接,就会发现只允许postgres用户连接postgres库,并且需要密码才能连接:postgres@pgdb-> psqlPassword: 当连接其余库时,则会报如下错误:postgres@pgdb-> psql -d benchmarksqlpsql: 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 狮子歌歌

阅读全文
0 0
原创粉丝点击