文档章节

postgresql 使用jdbc连接过程的分析

harris2016
 harris2016
发布于 2016/06/16 17:31
字数 553
阅读 263
收藏 2
点赞 0
评论 0

  本人在开发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
博文 37
码字总数 30058
作品 0
杭州
程序员
ETL for Oracle to PostgreSQL 1 - Oracle Data Integrator (ODI)

标签 PostgreSQL , Oracle , ETL , Oracle Data Integrator , ODI 背景 原文 https://www.cdata.com/kb/tech/postgresql-jdbc-odi.rst 正文 ETL PostgreSQL in Oracle Data Integrator This ......

德哥 ⋅ 05/06 ⋅ 0

Confluence 6 PostgreSQL 问题解决

如果 Confluence 提示没有 class 文件,你可能将你的 JDBC 驱动放置到了错误的文件夹。 如果你不能从你从 Confluence 中连接到 PostgreSQL ,并且这 2 个服务器分别在不同的机器上,可能是因...

honeymose ⋅ 06/02 ⋅ 0

Confluence 6 配置一个数据源连接

这个指南指导你如何配置使用 JNDI 数据源来连接到你的数据库。使用这个类型的连接,Confluence 将会询问应用服务器(Tomcat)中你配置的连接信息。 如果你希望使用 JDBC 的数据库连接方式,请...

honeymose ⋅ 06/08 ⋅ 0

通用数据库管理工具 DBeaver 5.0.3 发布

DBeaver 5.0.3 发布,DBeaver 是一个通用的数据库管理工具和 SQL 客户端,支持 MySQL、PostgreSQL、Oracle、DB2、MSSQL、Sybase、Mimer、HSQLDB、Derby, 以及其他兼容 JDBC 的数据库。DBeav...

周其 ⋅ 04/16 ⋅ 0

ETL for Oracle to PostgreSQL 2 - Pentaho Data Integrator (PDI, kettle)

标签 PostgreSQL , Oracle , ETL , Pentaho Data Integrator , PDI , kettle 背景 原文 https://wiki.postgresql.org/wiki/MigratingfromonedatabasetoanotherwithPentahoETL Migration (sc......

德哥 ⋅ 05/06 ⋅ 0

项目执行mvn install 失败

OR] Failed to execute goal org.codehaus.mojo:aspectj-maven-plugin:1.7:compile (default) on project pg-param-sdk: AJC compiler errors: [ERROR] error at (no source information ava......

鬼才王 ⋅ 04/25 ⋅ 0

Confluence 6 新 Confluence 安装配置一个数据源连接

如果在你的 Tomcat 中配置了数据源,并且Confluence 设置指南在安装的时候检测到这个配置的时候,配置数据源的选项将会提供给你进行配置。入股你希望使用数据源,请参考下面的配置。 1. 停止...

honeymose ⋅ 06/08 ⋅ 0

PostgreSQL Oracle 兼容性之 - 消息队列 DBMS_AQ

标签 PostgreSQL , Oracle , 兼容性 , dbmsaq , channel , payload , listen , notify 背景 数据库支持消息队列的功能,利用消息队列可以实现异步广播,结合流计算实现异常数据推送等。 Orac...

德哥 ⋅ 04/18 ⋅ 0

使用JPA + Eclipselink操作PostgreSQL数据库

首先确保您已经安装了PostgreSQL。您可以参考我这篇文章PostgreSQL扫盲教程。 使用Eclipse创建一个新的JPA project: Platform选择EclipseLink,作为JPA的provider之一。 在Eclipse里自动生成...

JerryWang_SAP ⋅ 05/05 ⋅ 0

PostgreSQL与MySQL的区别收集(转)

特性 MySQL PostgreSQL 实例 通过执行 MySQL 命令(mysqld)启动实例。一个实例可以管理一个或多个数据库。一台服务器可以运行多个 mysqld 实例。一个实例管理器可以监视 mysqld 的各个实例。...

easonjim ⋅ 05/12 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

开启Swarm集群以及可视化管理

在搭建的两台coreos服务器上开启swarm集群 前置条件: docker均开启2375端口 同一个局域网内 主服务器上安装Portainer容器 安装Portainer容器执行: docker run -d -p 9000:9000 --restart=a...

ykbj ⋅ 9分钟前 ⋅ 0

单例设计模式

1、单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例 2、饿汉式单例类 在这个类被加载时,静态变量instance会被初始化,此时类的私有构造子会被调用 饿汉式是典型...

职业搬砖20年 ⋅ 14分钟前 ⋅ 0

前端基础(四):前端国际规范收集

字数:1142 阅读时间:5分钟 前言 由于前端技术的灵活性和杂乱性,导致网上的许多解决方案不够全面甚至是完全错误,容易起到误导作用。所以,我对搜索到的解决方案往往是存疑态度。那么,如何...

老司机带你撸代码 ⋅ 16分钟前 ⋅ 0

Failed to open/create Network-VirtualBox Host-Only

虚拟机版本 : Oracle Vm VirtualBox 5.2.12 报错时机:开网卡二,重启虚拟机报错 "Failed to open/create the internal network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Ada......

p至尊宝 ⋅ 19分钟前 ⋅ 0

三分钟学会如何在函数计算中使用 puppeteer

摘要: 使用 puppeteer 结合函数计算,可以快速的构建弹性的服务完成各种功能,包括:生成网页截图或者 PDF、高级爬虫,可以爬取大量异步渲染内容的网页、模拟键盘输入、表单自动提交、登录网...

阿里云云栖社区 ⋅ 22分钟前 ⋅ 0

springMVC接收表单时 Bean对象有Double Int Char类型的处理

前台ajax提交表单price为double类型 后台controller就介绍不到 400错误 前台 实体类: public class ReleaseMapIconConfig{ private String id; private long maxValue; private long minVal......

废柴 ⋅ 25分钟前 ⋅ 0

ZOOKEEPER安装

工作需要在ubuntu上配置了一个zookeeper集群,有些问题记录下来。 1. zookeeper以来java,所以首先要安装java。但是ubuntu系统有自带的jdk,需要通过命令切换java版本: $ sudo update-alter...

恰东 ⋅ 28分钟前 ⋅ 0

linux 进程地址空间的一步步探究

我们知道,在32位机器上linux操作系统中的进程的地址空间大小是4G,其中0-3G是用户空间,3G-4G是内核空间。其实,这个4G的地址空间是不存在的,也就是我们所说的虚拟内存空间。 那虚拟内存空间...

HelloRookie ⋅ 28分钟前 ⋅ 0

myatis #{}与${}区别及原理

https://blog.csdn.net/wo541075754/article/details/54292751

李道福 ⋅ 31分钟前 ⋅ 0

三分钟学会如何在函数计算中使用 puppeteer

摘要: 使用 puppeteer 结合函数计算,可以快速的构建弹性的服务完成各种功能,包括:生成网页截图或者 PDF、高级爬虫,可以爬取大量异步渲染内容的网页、模拟键盘输入、表单自动提交、登录网...

猫耳m ⋅ 32分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部