Linux 系统中 ODBC 驱动的安装与配置指南

news2024/9/24 9:28:26

Linux 下的 ODBC 包

从发布包中获取,包名为 openGauss-*.*.0-ODBC.tar.gz。Linux 环境下,开发应用程序要用到 unixODBC 提供的头文件(sql.h、sqlext.h 等)和库 libodbc.so。这些头文件和库可从 unixODBC-2.3.0 的安装包中获得。

配置数据源

将 openGauss 提供的 ODBC DRIVER(psqlodbcw.so)配置到数据源中便可使用。配置数据源需要配置 “odbc.ini” 和 “odbcinst.ini” 两个文件(在编译安装 unixODBC 过程中生成且默认放在 “/usr/local/etc” 目录下),并在服务器端进行配置。

  1. 获取 unixODBC-2.3.9 源码包。

    获取参考地址:http://www.unixodbc.org/download.html

  2. 安装 unixODBC。如果机器上已经安装了其他版本的 unixODBC,可以直接覆盖安装。

    目前不支持 unixODBC-2.2.1 版本。以 unixODBC-2.3.0 版本为例,在客户端执行如下命令安装 unixODBC。默认安装到 “/usr/local” 目录下,生成数据源文件到 “/usr/local/etc” 目录下,库文件生成在 “/usr/local/lib” 目录。

    tar zxvf unixODBC-2.3.9.tar.gz
    cd unixODBC-2.3.9
    #修改configure文件(如果不存在,那么请修改configure.ac),找到LIB_VERSION
    #将它的值修改为"1:0:0",这样将编译出*.so.1的动态库,与psqlodbcw.so的依赖关系相同。
    vim configure
    
    ./configure --enable-gui=no #如果要在ARM服务器上编译,请追加一个configure参数: --build=aarch64-unknown-linux-gnu 
    make
    #安装可能需要root权限
    make install
    
  3. 替换客户端 openGauss 驱动程序。

    1. 将 openGauss-x.x.x-ODBC.tar.gz 解压到 “/usr/local/lib” 目录下。解压会得到 “psqlodbcw.la” 和 “psqlodbcw.so” 两个文件。
    2. 将 openGauss-x.x.x-ODBC.tar.gz 解压后 lib 目录中的库拷贝到 “/usr/local/lib” 目录下。
  4. 配置数据源。

    1. 配置 ODBC 驱动文件。

      在 “/xxx/odbc/etc/odbcinst.ini” 文件中追加以下内容。

      [GaussMPP]
      Driver64=/xxx/odbc/lib/psqlodbcw.so
      setup=/xxx/odbc/lib/psqlodbcw.so
      

      odbcinst.ini 文件中的配置参数说明如表 2 所示。

      表 2 odbcinst.ini 文件配置参数

      参数

      描述

      示例

      [DriverName]

      驱动器名称,对应数据源 DSN 中的驱动名。

      [DRIVER_N]

      Driver64

      驱动动态库的路径。

      Driver64=/xxx/odbc/lib/psqlodbcw.so

      setup

      驱动安装路径,与 Driver64 中动态库的路径一致。

      setup=/xxx/odbc/lib/psqlodbcw.so

    2. 配置数据源文件。

      在 “/usr/local/etc/odbc.ini” 文件中追加以下内容。

      [MPPODBC]
      Driver=GaussMPP
      Servername=10.145.130.26(数据库Server IP)
      Database=postgres  (数据库名)
      Username=omm  (数据库用户名)
      Password=  (数据库用户密码)
      Port=8000 (数据库侦听端口)
      Sslmode=allow
      

      odbc.ini 文件配置参数说明如表 3 所示。

      表 3 odbc.ini 文件配置参数

      参数

      描述

      示例

      [DSN]

      数据源的名称。

      [MPPODBC]

      Driver

      驱动名,对应 odbcinst.ini 中的 DriverName。

      Driver=DRIVER_N

      Servername

      服务器的 IP 地址。

      Servername=10.145.130.26

      Database

      要连接的数据库的名称。

      Database=postgres

      Username

      数据库用户名称。

      Username=omm

      Password

      数据库用户密码。

      Password=

      说明:

      ODBC 驱动本身已经对内存密码进行过清理,以保证用户密码在连接后不会再在内存中保留。

      但是如果配置了此参数,由于 UnixODBC 对数据源文件等进行缓存,可能导致密码长期保留在内存中。

      推荐在应用程序连接时,将密码传递给相应 API,而非写在数据源配置文件中。同时连接成功后,应当及时清理保存密码的内存段。

      Port

      服务器的端口号。

      Port=8000

      Sslmode

      开启 SSL 模式

      Sslmode=allow

      Debug

      设置为 1 时,将会打印 psqlodbc 驱动的 mylog,日志生成目录为 /tmp/。设置为 0 时则不会生成。

      Debug=1

      UseServerSidePrepare

      是否开启数据库端扩展查询协议。

      可选值 0 或 1,默认为 1,表示打开扩展查询协议。

      UseServerSidePrepare=1

      UseBatchProtocol

      是否开启批量查询协议(打开可提高 DML 性能);可选值 0 或者 1,默认为 1。

      当此值为 0 时,不使用批量查询协议(主要用于与早期数据库版本通信兼容)。

      当此值为 1,并且数据库 support_batch_bind 参数存在且为 on 时,将打开批量查询协议。

      UseBatchProtocol=1

      ForExtensionConnector

      这个开关控制着 savepoint 是否发送,savepoint 相关问题可以注意这个开关。

      ForExtensionConnector=1

      UnamedPrepStmtThreshold

      每次调用 SQLFreeHandle 释放 Stmt 时,ODBC 都会向 server 端发送一个 Deallocate plan_name 语句,业务中存在大量这类语句。为了减少这类语句的发送,我们将 stmt->plan_name 置空,从而使得数据库识别这个为 unamed stmt。增加这个参数对 unamed stmt 的阈值进行控制。

      UnamedPrepStmtThreshold=100

      ConnectionExtraInfo

      GUC 参数 connection_info 中显示驱动部署路径和进程属主用户的开关。

      ConnectionExtraInfo=1

      说明:

      默认值为 0。当设置为 1 时,ODBC 驱动会将当前驱动的部署路径、进程属主用户上报到数据库中,记录在 connection_info 参数里;同时可以在 PG_STAT_ACTIVITY 中查询到。

      BoolAsChar

      设置为 Yes 是,Bools 值将会映射为 SQL_CHAR。如不设置将会映射为 SQL_BIT。

      BoolsAsChar = Yes

      RowVersioning

      当尝试更新一行数据时,设置为 Yes 会允许应用检测数据有没有被其他用户进行修改。

      RowVersioning=Yes

      ShowSystemTables

      驱动将会默认系统表格为普通 SQL 表格。

      ShowSystemTables=Yes

      其中关于 Sslmode 的选项的允许值,具体信息见下表:

      表 4 Sslmode 的可选项及其描述

      Sslmode

      是否会启用 SSL 加密

      描述

      disable

      不使用 SSL 安全连接。

      allow

      可能

      如果数据库服务器要求使用,则可以使用 SSL 安全加密连接,但不验证数据库服务器的真实性。

      prefer

      可能

      如果数据库支持,那么建议使用 SSL 安全加密连接,但不验证数据库服务器的真实性。

      require

      必须使用 SSL 安全连接,但是只做了数据加密,而并不验证数据库服务器的真实性。

      verify-ca

      必须使用 SSL 安全连接,并且验证数据库是否具有可信证书机构签发的证书。

      verify-full

      必须使用 SSL 安全连接,在 verify-ca 的验证范围之外,同时验证数据库所在主机的主机名是否与证书内容一致。openGauss 不支持此模式。

       说明: SSL 模式: 保证 client.key * 系列文件为 600 权限: 退回根目录,创建.postgresql 目录,并将 root.crt,client.crt,client.key,client.key.cipher,client.key.rand,client.req,server.crt,server.key,server.key.cipher,server.key.rand,server.req 放在此路径下。 Unix 系统下,server.crt、server.key 的权限设置必须禁止任何外部或组的访问,请执行如下命令实现这一点。

      chmod 0600 server.key
      

      将 root.crt 以及 server 开头的证书相关文件全部拷贝进数据库 install/data 目录下(与 postgresql.conf 文件在同一路径)。 修改 postgresql.conf 文件:

      ssl = on
      ssl_cert_file = 'server.crt'
      ssl_key_file = 'server.key'
      ssl_ca_file = 'root.crt'
      

      修改完参数后需重启数据库。 修改配置文件 odbc.ini 中的 sslmode 参数(require 或 verify-ca)。

  5. 配置数据库服务器。

    1. 以操作系统用户 omm 登录数据库主节点。

    2. 执行如下命令增加对外提供服务的网卡 IP 或者主机名(英文逗号分隔),其中 NodeName 为当前节点名称:

      gs_guc reload -N NodeName -I all -c "listen_addresses='localhost,192.168.0.100,10.11.12.13'"
      

      在 DR(Direct Routing,LVS 的直接路由 DR 模式)模式中需要将虚拟 IP 地址(10.11.12.13)加入到服务器的侦听地址列表中。

      listen_addresses 也可以配置为 “*” 或 “0.0.0.0”,此配置下将侦听所有网卡,但存在安全风险,不推荐用户使用,推荐用户按照需要配置 IP 或者主机名,打开侦听。

    3. 执行如下命令在数据库主节点配置文件中增加一条认证规则。(这里假设客户端 IP 地址为 10.11.12.13,即远程连接的机器的 IP 地址)

      gs_guc reload -N all -I all -h "host all jack 10.11.12.13/32 sha256"
      

       说明:

      • -N all 表示 openGauss 中的所有主机。
      • -I all 表示主机中的所有实例。
      • -h 表示指定需要在 “pg_hba.conf” 增加的语句。
      • all 表示允许客户端连接到任意的数据库。
      • jack 表示连接数据库的用户。
      • 10.11.12.13/_32_表示只允许 IP 地址为 10.11.12.13 的主机连接。在使用过程中,请根据用户的网络进行配置修改。32 表示子网掩码为 1 的位数,即 255.255.255.255。
      • sha256 表示连接时 jack 用户的密码使用 sha256 算法加密。

      如果将 ODBC 客户端配置在和要连接的数据库主节点在同一台机器上,则可使用 local trust 认证方式,如下:

      local all all trust
      

      如果将 ODBC 客户端配置在和要连接的数据库主节点在不同机器上,则需要使用 sha256 认证方式,如下:

      host all all xxx.xxx.xxx.xxx/32 sha256
      
    4. 重启 openGauss。

      gs_om -t stop
      gs_om -t start
      
  6. 在客户端配置环境变量。

    vim ~/.bashrc
    

    在配置文件中追加以下内容。

    export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH
    export ODBCSYSINI=/usr/local/etc
    export ODBCINI=/usr/local/etc/odbc.ini
    
  7. 执行如下命令使设置生效。

    source ~/.bashrc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1706373.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

@EnableConfigurationProperties源码解析

前言 EnableConfigurationProperties注解的使用,请移步相关博文:EnableConfigurationProperties注解使用 前置知识 Import注解作用简述 注入的类一般继承 ImportSelector 或者 ImportBeanDefinitionRegistrar 接口 继承ImportSelector接口&#xff…

黑龙江某市数字孪生地下水监测系统平台项目建设经验

项目背景 地下水是一种特殊而珍贵的资源,它具有不可替代性,与经济发展及人民生活息息相关,针对日趋严峻的水资源危机,如何合理利用有限的水资源,保障国民经济的可持续发展是一个迫切需要解决的问题。 黑龙江某市积极…

SpringMvc-restful设计风格

Restful 1、入门1.1 简介1.2 实例 1、入门 1.1 简介 RESTFul是什么 RESTFul是WEB服务接口的一种设计风格。 RESTFul定义了一组约束条件和规范&#xff0c;可以让WEB服务接口更加简洁、易于理解、易于扩展、安全可靠。 1.2 实例 web.xml <?xml version"1.0"…

系统测试需求指南(Word版-软件全套资料下载)

1 目的 2 概述 3 测试需求 3.1 测试范围 3.2 测试目标 4 测试需求的现状 5 测试需求的内容 5.1 主体内容 5.2 管理内容 6 测试需求的制定 6.1 需求信息来源 6.2 需求分析 6.2.1 功能性需求 6.2.2 系统功能需求 6.2.3 界面需求 6.2.4 安装需求 6.2.5 业务需求 …

教师信息素养四个方面是什么

在这个信息爆炸的时代&#xff0c;老师们该如何提升自己的信息素养&#xff1f;信息素养&#xff0c;这个看似简单的概念&#xff0c;实际上包含着丰富的内涵和多维度的技能。它不仅仅是获取信息的能力&#xff0c;更是一种综合运用信息资源&#xff0c;解决教学和生活中问题的…

gRPC 状态码解读:一文看懂

gRPC 是什么&#xff1f; gRPC&#xff08;gRPC Remote Procedure Call&#xff09;是一个高性能的开源框架&#xff0c;它通过远程过程调用&#xff08;RPC&#xff09;机制促进应用程序之间的通信。 gRPC 框架使客户端应用程序能够调用不同机器上的服务器应用程序的方法&am…

零拷贝(Zero Copy)

目录 零拷贝&#xff08;Zero Copy&#xff09; 1.什么是Zero Copy? 2.物理内存和虚拟内存 3.内核空间和用户空间 4.Linux的I/O读写方式 4.1 I/O中断原理 4.2 DMA传输原理 5.传统I/O方式 5.1传统读操作 5.2传统写操作 6.零拷贝 6.1.用户态直接IO 6.2.mmapwrite …

计算机图形学入门02:线性代数基础

1.向量&#xff08;Vetors&#xff09; 向量表示一个方向&#xff0c;还能表示长度&#xff08;向量的摸&#xff09;。一般使用单位向量表示方向。 向量加减&#xff1a;平行四边形法则、三角形法则。比卡尔坐标系描述向量&#xff0c;坐标直接相加。 1.1向量点乘&#xff08;…

帆软报表点击表格给数据集传递参数案例

一、效果 有四个模块&#xff0c;分别是采购总金额&#xff0c;采购总数量&#xff0c;采购合同数量&#xff0c;采购合同申请数量通过点击单元格上的月份&#xff0c;展示不同的月份数据&#xff0c;进行单元格和表格之间的联动 二、准备好数据库表和展示数据内容 2.1 建表 …

英语四级翻译练习笔记③——大学英语四级考试2023年12月真题(第三套)

目录 引言&#xff08;必看&#xff09; 四级翻译评分标准分析及真题解析 四级翻译评分标准 四级翻译真题 学生作答 1. 评分 2. 修正翻译中的错误 错误标记&#xff1a; 3. 改正句子 4. 标出错误单词 5. 标准答案 6. 常考万能句子 7.重点单词的中文意思 引言&…

Excel未响应时强关后,Excel插件消失

目录 我们分析一下插件消失的原因&#xff1a; 针对上面表现出来的2个问题&#xff0c;进行针对性的解决 &#xff1a; 1、不被关进去&#xff0c;是不是就没有后续的一系列的问题了&#xff0c;各自安好 2、保留住自动加载的行为 PS&#xff1a;配置受信任的位置注册列表…

【K8s】专题四(1):Kubernetes 控制器简介

以下内容均来自个人笔记并重新梳理&#xff0c;如有错误欢迎指正&#xff01;如果对您有帮助&#xff0c;烦请点赞、关注、转发&#xff01;欢迎扫码关注个人公众号&#xff01; 目录 一、基本概念 二、工作原理 三、常见类型 四、相关特性 一、基本概念 Kubernetes 控制器…

Python考试练习题---day1

1.计算2的n次幂结果的后3位 获得用户输入的一个数字N&#xff0c;计算并输出2的N次幂结果的后3位。 【输出样例】-----因为2的10次方等于1024 输入10输出024 ninput() print(str(2**eval(n))[-3:]) 2.分割四位正整数 例1&#xff1a; 编写程序&#xff0c;提示用户从键盘…

[Redis]String类型

基本命令 set命令 将 string 类型的 value 设置到 key 中。如果 key 之前存在&#xff0c;则覆盖&#xff0c;无论原来的数据类型是什么。之前关于此 key 的 TTL 也全部失效。 set key value [expiration EX seconds|PX milliseconds] [NX|XX] 选项[EX|PX] EX seconds⸺使用…

vscode+docker搭建迷你开发环境。制作docker镜像,并通过vscode连接后进行开发

制作自己的docker镜像&#xff0c;将docker镜像作为服务器&#xff0c;接受vscode连接 目录 1. 制作开发环境镜像 1.1 选择基础镜像 1.2 编写dockerfile 1.3 构建镜像 2. 启动镜像 3. 添加用户 3.1 查看物理机上用户信息 3.2 登录到docker中 3.3 按照物理机的用户和组…

在visual studio 2022中编译yaml-cpp 32位静态库的严重踩坑问题解决过程

使用vcpkg 引入yaml-cpp把程序调试好了,但是分发的时候不想带着yaml-cpp的动态链接库文件,所以参考网上的文章想进行程序的静态编译,关于如何编译yaml-cpp的静态库网上有很多文章,而且去看yaml-cpp的github官方说明文件人家说你啥都不干就是默认编译为静态库了,好家伙,兴…

MySQL主从复制故障:“ Slave_SQL_Running:No“ 两种解决办法

问题 今天搭建MySQL的主从复制&#xff0c;查看从机状态时show slave status\G&#xff0c;发现这个参数为NO&#xff0c;导致主从复制失败。 Slave_SQL_Running: No 后面上网查阅了一下资料&#xff0c;大概就是因为在连接支持数据库后&#xff0c;也就是这个命令后&#xff…

Python 应用开发:Streamlit 布局篇(容器布局)

st.columns 以并列方式插入容器。 插入若干并排排列的多元素容器&#xff0c;并返回一个容器对象列表。 要在返回的容器中添加元素&#xff0c;可以使用 with 符号&#xff08;首选&#xff09;或直接调用返回对象的方法。请参见下面的示例。 列只能放置在其他列的内部&…

word如何创造新的格式标题

1 效果如下&#xff1a;&#xff08;标题命名默认音序排序&#xff09; 2 创建 选中自己喜欢的标题&#xff0c;修改字号字体&#xff0c;then 3 修改 注意要点如下&#xff1a; 后续&#xff1a;以上操作可能导致后续一级标题不能折叠二级标题&#xff0c;目录导航栏也不能…

QListWidget详解

QListWidget详解 QListWidget 是 PyQt5 中一个方便的部件&#xff0c;用于创建和管理列表。它继承自 QListView&#xff0c;并提供了一些高级功能&#xff0c;使得添加和管理列表项更加简单。以下是 QListWidget 的详解&#xff0c;包括基本用法、主要方法和属性以及如何与其他…