return conn;
};
5.3 使用 ODBC 连接数据库
ODBC(Open Database Connectivity,开放数据库互连)是由Microsoft公司基于X/
OPEN CLI提出的用于访问数据库的应用程序编程接口。应用程序通过ODBC提供的API 与数据库进行交互,在避免了应用程序直接操作数据库系统的同时,增强了应用程序 的可移植性、扩展性和可维护性。
GaussDB(for openGauss)目前在以下环境中提供对ODBC3.5的支持。
表
5-3 ODBC 支持平台
操作系统 平台
EulerOS 2.5 x86_64位
EulerOS 2.8 ARM64位
Windows 7 x86_32位
Windows 7 x86_64位
Windows Server 2008 x86_32位
Windows Server 2008 x86_64位
UNIX/Linux系统下的驱动程序管理器主要有unixODBC和iODBC,在这选择驱动管理器
● 已下载Linux版本的ODBC驱动包和Windows版本的ODBC驱动包,单击此处获取 GaussDB(for openGauss)驱动包“GaussDB_opengauss_client_tools.zip”并解 压,根据操作系统架构获取ODBC驱动。
Linux环境下,开发应用程序要用到unixODBC提供的头文件(sql.h、sqlext.h等)
和库libodbc.so。这些头文件和库可从unixODBC-2.3.0的安装包中获得。
● 已下载开源unixODBC代码文件,支持版本为2.3.0,下载地址:https://
sourceforge.net/projects/unixodbc/files/unixODBC/2.3.0/
unixODBC-2.3.0.tar.gz/download
● 将提供的ODBC DRIVER(psqlodbcw.so)配置到数据源中便可使用。配置数据源 需要配置“odbc.ini”和“odbcinst.ini”两个文件(在编译安装unixODBC过程中 生成且默认放在“/usr/local/etc”目录下),并在服务器端进行配置。
用户指南 5 使用驱动连接实例
在 Linux 下使用 ODBC 连接数据库
步骤1 安装unixODBC。如果机器上已经安装了其他版本的unixODBC,可以直接覆盖安装。
目前不支持unixODBC-2.2.1版本。以unixODBC-2.3.0版本为例,在客户端执行如下命 令安装unixODBC。默认安装到“/usr/local”目录下,生成数据源文件到“/usr/local/
etc”目录下,库文件生成在“/usr/local/lib”目录。
tar zxvf unixODBC-2.3.0.tar.gz cd unixODBC-2.3.0
#修改configure文件,找到LIB_VERSION
#将它的值修改为"1:0:0",这样将编译出*.so.1的动态库,与psqlodbcw.so的依赖关系相同。
vim configure
./configure --enable-gui=no #如果要在鲲鹏服务器上编译,请追加一个configure参数: --build=aarch64-unknown-linux-gnu
make#安装可能需要root权限 make install
步骤2 替换客户端GaussDB(for openGauss)驱动程序。
将GaussDB-Kernel-VxxxRxxxCxx-EULER-64bit-Odbc.tar.gz解压到“/usr/local/lib”目
表
5-4 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 ”文件中追加以下内容。
[gaussdb]
Driver=GaussMPP
Servername=10.10.0.13(数据库Server IP)
Database=postgres (数据库名)
Username=omm (数据库用户名)
Password= (数据库用户密码)
Port=8000 (数据库侦听端口)
Sslmode=allow
odbc.ini文件配置参数说明如表5-5所示。
用户指南 5 使用驱动连接实例
表
5-5 odbc.ini 文件配置参数
参数 描述 示例
[DSN] 数据源的名称。 [gaussdb]
Driver 驱动名,对应odbcinst.ini中
的DriverName。 Driver=DRIVER_N Servername 服务器的IP地址。 Servername=10.145.130.
26
Database 要连接的数据库的名称。 Database=postgres Username 数据库用户名称。 Username=omm Password 数据库用户密码。 Password=
说明ODBC驱动本身已经对内存
Port 服务器的端口号。 Port=8000
Sslmode 开启SSL模式 Sslmode=allow UseServerSidePre
UseBatchProtocol 是否开启批量查询协议(打开 可提高DML性能);可选值0
参数 描述 示例 ConnectionExtraI
nfo GUC参数connection_info中 显示驱动部署路径和进程属主
sslmode
是否会启用SSL加密
描述disable 否 不使用SSL安全连接。
allow 可能 如果数据库服务器要求使用,则可以使用SSL安全加 密连接,但不验证数据库服务器的真实性。
prefer 可能 如果数据库支持,那么首选使用SSL安全加密连接,
但不验证数据库服务器的真实性。
require 是 必须使用SSL安全连接,但是只做了数据加密,而并 不验证数据库服务器的真实性。
verify-ca 是 必须使用SSL安全连接,并且验证数据库是否具有可 信证书机构签发的证书。
verify-full 是 必须使用SSL安全连接,在verify-ca的验证范围之 外,同时验证数据库所在主机的主机名是否与证书
export PGSSLCERT="/YOUR/PATH/OF/client.crt" #请修改该路径到client.crt的绝对路径 export PGSSLKEY="/YOUR/PATH/OF/client.key" #请修改该路径到client.key的绝对路径
将根证书cacert.pem文件放至客户端用户home目录下的.postgresql目录下(如果没有请创建该目录),并将
export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH export ODBCSYSINI=/usr/local/etc
export ODBCINI=/usr/local/etc/odbc.ini
用户指南 5 使用驱动连接实例
步骤6 执行如下命令使设置生效。
source ~/.bashrc
步骤7 执行以下命令,开始连接数据库。
isql -v
GaussODBC GaussODBC为数据源名称步骤1 替换客户端GGaussDB(for openGauss)驱动程序
将GaussDB-Kernel-V500R001C20-Windows-Odbc-X86.tar.gz解压后,根据需要,点 击psqlodbc.msi(32位)或者psqlodbc_x64.msi(64 位)进行驱动安装。
步骤2 打开驱动管理器。
在配置数据源时,请使用对应的驱动管理器(假设操作系统安装盘符为C盘,如果是其 他盘符,请对路径做相应修改):
●
64位操作系统上进行32位程序开发,安装32位驱动程序后,使用32位的驱动管理
器:C:\Windows\SysWOW64\odbcad32.exe请勿直接使用“控制面板> 管理工具 > 数据源(ODBC)”。
说明
WoW64的全称是"Windows 32-bit on Windows 64-bit",C:\Windows\SysWOW64\存放 的是64位系统上的32位运行环境。而C:\Windows\System32\存放的是与操作系统一致的 运行环境,具体的技术信息请查阅Windows的相关技术文档。
●
64位操作系统上进行64位程序开发,安装64位驱动程序后,使用64位的驱动管理
器:C:\Windows\System32\odbcad32.exe请勿直接使用“控制面板 > 管理工具 > 数据源(ODBC)”。
● 32位操作系统请使用:C:\Windows\System32\odbcad32.exe
或者点击“计算机 > 控制面板 > 管理工具 > 数据源(ODBC)”打开驱动管理器。
步骤3 配置数据源。
在打开的驱动管理器上,选择“用户DSN > 添加 > PostgreSQL Unicode”(如果是64 位驱动,将会有64位标识),然后进行配置:
用户指南 5 使用驱动连接实例
须知
此界面上配置的用户名及密码信息,将会被记录在Windows注册表中,再次连接数据 库时就不再需要输入认证信息。但是出于安全考虑,建议在单击"Save"按钮保存配置 信息前,清空相关敏感信息;在使用ODBC的连接API时,再传入所需的用户名、密码 信息。
步骤4 SSL模式。
将client.crt、client.key、client.key.cipher、client.key.rand文件放至%APPDATA%
\postgresql(该目录需手动建立)目录下,并且将文件名中的client改为postgres,例如 client.key修改为postgres.key;将cacert.pem文件放至%APPDATA%\postgresql目 录,并更名为root.crt。
说明
%APPDATA% 该值在安装时由客户指定,默认位置在C:\Users\[username]\AppData。
同时将步骤2中的设置窗口的“SSL Mode”选项调整至“require”。
表
5-7 sslmode 的可选项及其描述 sslmode
是否会启用SSL加密
描述disable 否 不使用SSL安全连接。
allow 可能 如果数据库服务器要求使用,则可以使用SSL安全加密 连接,但不验证数据库服务器的真实性。
prefer 可能 如果数据库支持,那么首选使用SSL安全加密连接,但 不验证数据库服务器的真实性。
require 是 必须使用SSL安全连接,但是只做了数据加密,而并不 验证数据库服务器的真实性。
用户指南 5 使用驱动连接实例
sslmode
是否会启用SSL加密
描述verify-ca 是 必须使用SSL安全连接,并且验证数据库是否具有可信 证书机构签发的证书。当前windows ODBC不支持cert 方式认证。
verify-full 是 必须使用SSL安全连接,在verify-ca的验证范围之外,
同时验证数据库所在主机的主机名是否与证书内容一 致。当前windows odbc不支持cert方式认证。
步骤5 点击Test进行测试连接。
● 如果显示如下,则表明配置正确,连接成功。
● 若显示ERROR信息,则表明配置错误。请检查上述配置是否正确。