文档章节

postgresql 使用jdbc连接过程的分析

harris2016
 harris2016
发布于 2016/06/16 17:31
字数 553
阅读 267
收藏 2

  本人在开发pgoneproxy的过程中,需要实现前端登录到pgoneproxy,pgoneproxy针对前端进行校验,校验通过后才能使用连接池中的连接,而连接池中的连接是pgoneproxy通过发送数据包的方式进行的连接。

    下图是客户端与服务端在建立连接过程中,发送的数据包的情况:

    由于postgresql 9.4已经支持SSL,故jdbc会先来请求是否允许使用SSL的方式进行验证。如果不允许使用SSL的方式进行验证,则服务端会发送一个N字符给客户端,客户端再发送startupMessage包给服务端。本文只讲解非SSL连接的情况,因为pgoneproxy只支持非SSL连接。

    在startupMessage包中包含了用户名,数据库或者其他的参数名以及这些参数的值。服务端在接收到这些参数时,会根据服务端配置的验证方式向客户端发送Authentication包。目前postgresql支持的验证方式有:Kerberos V5,明文的方式,MD5加密, SCM 方式,GSSAPI认证方式,SSPI认证方式,GSSAPI或者SSPI方式。它们之间的区别通过Authentication包中的第5个字节开始的4个字节进行标识。目前pgoneproxy已经支持明文,trust,MD5的验证方式。

     客户端在接收到Authentication包后,根据相应的规则生成密码,通过PasswordMessage数据包发送到服务端,服务端进行验证。如果验证通过,则发送AuthenticationOK包给客户端,紧接着发送参数包,BackendKey包给客户端。其中backendkey包中包含了服务端进程的pid以及后端的秘钥,当前端需要取消一个连接时就会使用这个秘钥和pid来进行区分后端连接。如果验证失败,则会直接关闭此连接。

      更多信息,请关注平民软件

 

    

© 著作权归作者所有

共有 人打赏支持
harris2016
粉丝 10
博文 53
码字总数 30227
作品 0
杭州
程序员
私信 提问
java ssh 项目oracle移植到postgresql

原来一使用ssh开发的项目,因实际需要,要从oracle迁移到postgresql。 理想 1.postgresql中创建相关表,把数据从oracle导到postgresql中 2.复制postgresql的jdbc包到项目中 3.配置jdbc参数,...

opal
2016/11/27
260
3
修改了数据库连接 可是db类型依然是

# 使用的数据库类型,根据db.type的值,下面对应类型的数据库连接要配置正确 db.type = mysql #db.type = postgresql #db.type = oracle #db.type = sqlserver #db.type = db2 # 使用postgre...

施立
2016/09/20
800
3
PostgreSQL jdbc 错误代码映射(SQLSTATE)

标签 PostgreSQL , SQLSTATE , 错误代码 , org.postgresql.util.PSQLState 背景 Does such a class enumerating the PostgreSQL error codes already exist? Yes, it does: org.postgresql.u......

德哥
10/05
0
0
多平台向Postgresql 迁移

最近有个工作要把 一个SqlServer 迁移到 Postgresql 平台上,上网搜了搜,EnterpriseDB在这块做了很多工作, EnterpriseDB 的 Postgres Plus Advanced Server管理工具中有一个 mogiration t...

从前
2013/01/30
0
0
PostgreSQL jdbc multi-host 配置与简单HA、Load Balance实现

标签 PostgreSQL , HA , jdbc , multi host , targetsessionattrs 背景 pg jdbc 与libpq一样,都是PG的连接驱动,都支持multi-master ,同时pg jdbc还支持了loadbalance。 《PostgreSQL libp......

德哥
09/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

容器之Zookeeper的使用

我们使用zookeeper时,都是在Linux上安装zookeeper,之后启动时要加入配置文件。 使用docker之后,我们可以直接使用镜像运行容器,镜像可以从docker.hub上下载,地址是https://hub.docker.co...

克虏伯
11分钟前
0
0
esxi 更换ssl证书

概述 就是想换一个证书而已,你可以通过下面的途径去申请一个泛解析域名的证书之后再esxi上安装上 使用阿里云域名api申请Let’s Encrypt泛域名免费ssl证书 申请完成证书之后进行下一步 操作 ...

bboysoulcn
24分钟前
1
0
PLC编程入门:梯形图

梯形图(LAD)是PLC编程的最佳可视化语言,它看起来非常类似于继电器电路图,因此如果 你对继电器控制和电子电路有所了解的话,那么学起来会非常容易! 在这个教程中,我们将学习关于使用梯形...

汇智网教程
27分钟前
1
0
Kubernetes 1.13.0的快速升级

Kubernetes 1.13.0已经正式发布,快速升级(含国内镜像快速下载链接)包括升级kubeadm/kubectl/kubelet版本、拉取镜像、升级Kubernetes集群三个主要步骤。注意Kubernetes 1.13.0版本暂时不支...

openthings
40分钟前
2
0
go的卸载和环境变量配个人.bashrc

若是用安装包直接解压 http://download.csdn.net/detail/u010026901/7592581 cd /usr/local tar -zxvf go1.1.2.linux-386.tar.gz(先把安装包移到这个目录) 3.安装 $ cd go/src,$ ./all.b......

dragon_tech
46分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部