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
  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Linux下使用ODBC库,需要进行以下步骤: 1. 安装ODBC驱动程序 首先需要安装ODBC驱动程序,比如unixODBC或者FreeTDS等。可以通过管理器进行安装,比如Ubuntu可以使用以下命令安装: ``` sudo apt-get install unixodbc unixodbc-dev ``` 2. 安装ODBC插件 QT提供了ODBC插件,需要先编译安装。下载QT源代码,进入源代码目录,执行以下命令: ``` cd qtbase/src/plugins/sqldrivers/odbc qmake odbc.pro make sudo make install ``` 3. 配置ODBC数据源 使用ODBC需要先在系统中配置ODBC数据源。可以通过ODBC配置文件/etc/odbc.ini和/etc/odbcinst.ini进行配置。在odbc.ini中添加数据源,比如: ``` [mydsn] Driver = FreeTDS Description = My database Servername = myserver Database = mydatabase ``` 在odbcinst.ini中添加驱动程序信息,比如: ``` [FreeTDS] Description = FreeTDS ODBC driver Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so ``` 4. 在QT项目中使用ODBC 在QT项目中使用ODBC需要在.pro文件中添加以下内容: ``` QT += sql QT += core-private QT += network-private LIBS += -lodbc ``` 然后在代码中使用QSqlDatabase连接ODBC数据源: ``` QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); db.setDatabaseName("mydsn"); if (db.open()) { // 连接成功 } else { // 连接失败 } ``` 以上是在Linux下使用QT5.12连接ODBC的基本步骤,具体的ODBC驱动程序和数据源配置可能会有所不同,需要根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值