文档章节

postgresql 使用jdbc连接过程的分析

harris2016
 harris2016
发布于 2016/06/16 17:31
字数 553
阅读 268
收藏 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
博文 54
码字总数 30661
作品 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
使用应用程序(Java/Python)访问MaxCompute Lightning进行数据开发

MaxCompute Lightning是MaxCompute产品的交互式查询服务,支持以PostgreSQL协议及语法连接访问Maxcompute项目,让您使用熟悉的工具以标准 SQL查询分析MaxCompute项目中的数据,快速获取查询结...

zhaowei121
01/16
0
0
使用Kettle导入数据到ADB for PostgreSQL

Kettle简介 Kettle(现也称为Pentaho Data Integration,简称PDI)是一款非常受欢迎的开源ETL工具软件,主要用于数据整合、转换和迁移。Kettle除了支持各种关系型数据库,HBase MongoDB这样的N...

阿里云云栖社区
05/07
0
0
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......

德哥
2018/10/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

面试爱奇艺,竟然挂在第5轮……

今天给大家分享我曾经在爱奇艺的面试,过程还是比较有意思的,可以给大家一些参考 <br> 聊骚阶段 嗲妹妹:你好,我是爱奇艺的HR,我们正在招聘运维开发岗位,请问您最近有在看工作机会吗? ...

上海小胖
36分钟前
1
0
Jenkins系列_插件安装及报错处理

进入Jenkins之后我们可以进行插件的安装,插件管理位于以下模块: 发现上面报了一堆错误,是因为插件的依赖没有安装好,那么这一节,就先把这些错误解决掉吧。解决完成后,也就基本会使用插件...

shzwork
今天
2
0
mysql mysql的所有查询语句和聚合函数(整理一下,忘记了可以随时看看)

查询所有字段 select * from 表名; 查询自定字段 select 字段名 from 表名; 查询指定数据 select * from 表名 where 条件; 带关键字IN的查询 select * from 表名 where 条件 [not] in(元素...

edison_kwok
昨天
9
0
解决多线程并行加载缓存问题(利用guava实现)

依赖 com.google.guava:guava:20.0 import com.google.common.cache.Cache;import com.google.common.cache.CacheBuilder;import java.util.concurrent.ExecutionException;import j......

暗中观察
昨天
4
0
利用VisualVM 内存查看

准备工作,建几个测试类。等下就是要查看这几个类里面的属性 package visualvm;public class MultiObject { private String str; private int i; MultiObject(String str...

冷基
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部