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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JavaWeb开发 2.Web开发 Web前端开发 ①介绍

内心一旦平静,外界便鸦雀无声 —— 24.5.27 一、初识Web前端 网页有哪些部分组成? 文字、图片、音频、视频、超链接 ...网页,背后的本质是什么? 前端代码前端的代码是如何转换成用户眼中的网页的? 通过浏览器转化(解析和渲染)成用户看…

PID控制中的积分到底是什么,为什么它可以将矩形线转换为曲线?simulink搭建PID控制,积分模块1/s

PID控制中的积分到底是什么,为什么它可以将矩形线转换为曲线, 这个问题呢其实道理很简单,用到的是初中的知识 我们做几个测试案例 如下面matlab搭建了积分1/s 那显示如下(红色曲线相当于加速度、蓝色曲线相当于速度)&a…

WHLUG活动回顾 | 4大技术分享!干货满满,热闹非凡!

内容来源:deepin(深度)社区 2024 年 5 月 25 日下午,由 deepin(深度)社区华中科技大学开放原子开源俱乐部联合举办的武汉 Linux 爱好者线下沙龙活动(WHLUG)在华中科技大学成功举办。…

因智而兴 向“新”而行 | 软通动力携子公司鸿湖万联亮相数字中国建设峰会·智算云生态大会

5月23日至27日,第七届数字中国建设峰会在福州盛大召开。作为峰会的重要组成部分,由中国电信、中国电科、中国电子联合主办的第三届智算云生态大会同步召开。此次大会以“国云注智 聚力向新”为主题,深入探讨了智算云、人工智能、数据要素、量…

技术支持服务体系建设

作者黄凯,曾就职于阿里云,从事对外电商能力输出平台Linkedmall的研发工作。 背景 曾在某公司做过某项目的技术支持负责人,对技术支持服务体系的建设偶有心得。打算分享一下。 我们是个ToBToC的电商项目,最初随着项目的上线&…

如何部署一套高可用性的医院信息管理系统?基于华为云、SpringBoot、Vue及Jenkins、Gitlab的CI/CD流程

目录 一、项目背景 二、项目架构 三、项目部署流程 1、前端部署 2、后端部署 3、监控与运维 四、项目过程 一、项目背景 随着医疗信息化程度的不断加深,医院信息管理系统的稳定性和可用性成为了医疗机构日常运营的关键。在这个数字化时代&am…

干冰清洗机的清洗原理及应用

干冰清洗机的清洗原理及应用可以详细阐述如下: 一、清洗原理 干冰清洗机的清洗原理主要基于干冰的低温冷冻作用。干冰在常温下会迅速升华,吸收大量的热量,使周围的温度迅速降低。当干冰颗粒通过特殊的干冰清洗机喷射到清洗物体表面时&#…

数据库系统概论(个人笔记)(第三部分)

数据库系统概论(个人笔记) 文章目录 数据库系统概论(个人笔记)3、SQL介绍3.1 SQL查询语言概述3.2 SQL数据定义3.3 SQL查询的基本查询结构3.4 其他基本操作3.5 设置操作3.6 空值3.7 聚合函数3.8 嵌套子查询3.9 数据库的修改 3、SQL…

sklearn监督学习--k近邻算法

sklearn监督学习 一、分类与回归二、泛化、过拟合与欠拟合三、k近邻算法四、分析KNeighborsClassifier五、k近邻算法用于回归优点、缺点和参数 一、分类与回归 监督学习是最常用也是最成功的机器学习类型之一。监督机器学习问题主要有两种,分别叫做分类与回归。分类…

金蝶云星空与旺店通·企业版对接集成采购入库查询打通创建采购入库单

金蝶云星空与旺店通企业版对接集成采购入库查询打通创建采购入库单 数据源系统:金蝶云星空 金蝶K/3Cloud(金蝶云星空)是移动互联网时代的新型ERP,是基于WEB2.0与云技术的新时代企业管理服务平台。金蝶K/3Cloud围绕着“生态、人人、体验”&…

没人愿意和我们最好的工程师一起工作

几年前,有一位魔术般厉害的工程师(我们叫他“乔恩”)为我工作。他的代码写得很好,代码审查(PRs)也完成得很快。从技术角度来看,他是个出色的工程师。 我们从其他工程师那里得到了一些关于他的普…

IDEA通过tomcat运行注意事项

配置run--》edit configurations 以下的A B部分要保持一致 A和B的路径要保持一致

在线封装APP:轻松实现个性化应用发布

你是否曾经因为无法快速封装和发布自己的APP而感到困扰?传统的APP封装和发布流程繁琐,需要耗费大量时间和精力。幸运的是,现在有了在线封装APP的解决方案,帮你轻松搞定这些麻烦事。 小猪APP封装平台www.appzhu.cn 什么是在线封装…

【乐吾乐3D可视化组态编辑器】相机与视角

系统默认的相机为环绕旋转相机,它可以环绕一个中心点做上下左右的旋转,来从不同角度观察场景。当然,您也可以把一些特定角度的信息保存下来,在系统中我们把这个信息称作视角。通过交互中的切换视角动作,您就可以实现把…

​你见过哪些不过度设计的优秀APP?​

优联前端https://ufrontend.com/ 提供一站式企业前端解决方案 “每日故宫”是一款以故宫博物院丰富的藏品为基础,结合日历形式展示每日精选藏品的移动应用。通过这款应用,用户可以随时随地欣赏到故宫的珍贵藏品,感受中华五千年文化的魅力。…

基于Python和MD5算法的公寓管理系统设计与实现-计算机毕业设计源码77723

摘 要 本论文主要论述了如何使用Python开发一个公寓管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,面向对象编程思想进行项目开发。在引言中,作者将论述公寓管理系统的当前背景以及系统开发的目的,后续章节将严格按照…

一文详解SpringBoot的自定义starter

目录 一、SpringBoot 二、自定义starter 三、SpringBoot的自定义starter 一、SpringBoot Spring Boot是一个开源的Java框架,由Pivotal团队(现为VMware的一部分)于2013年推出,旨在简化Spring应用程序的创建和部署过程。它基于S…

基于混合Transformer-CNN模型的多分辨率学习方法的解剖学标志检测

文章目录 Anatomical Landmark Detection Using a Multiresolution Learning Approach with a Hybrid Transformer-CNN Model摘要方法实验结果 Anatomical Landmark Detection Using a Multiresolution Learning Approach with a Hybrid Transformer-CNN Model 摘要 精确定位…

【MySQL数据库】存储过程实战——图书借阅系统

图书借阅归还 借阅不用count判断,归还不用具体字段值判断 每次借阅或者归还只能操作1本 数据准备 -- 创建数据库 create database db_test3 CHARACTER SET utf8 COLLATE utf8_general_ci; -- 使用数据库 use db_test3; -- 创建图书信息表: create tabl…

Git学习篇

目录 使用命令导入项目 使用命令导入项目 1. 使用git init 命令初始化一个新的Git仓库。 git init 是 Git 命令,用于初始化一个新的 Git 仓库。当您想要开始跟踪一个新项目的版本控制时,可以运行 git init 命令来初始化一个空的 Git 仓库。 如果出现以下…