来自jj大佬的修正:以下内容默认使用ecs,如果使用虚拟机需要使用不同的驱动,虚拟机上的odbc使用
https://opengauss.obs.cn-south-1.myhuaweicloud.com/1.1.0/x86/openGauss-1.1.0-ODBC.tar.gz
windows上安装的驱动选同一文件夹下的x86-64的驱动。
本文基于华为的实验3:openGauss场景化综合应用实验.docx,增加了Delphi连接部分。
使用ODBC连接数据库
修改数据库的pg_hba.conf文件。
在GS_HOME中查找pg_hba.conf文件,本实验中数据库GS_HOME设置的为/gaussdb/data/db1,实际操作中GS_HOME地址可以查看安装时的配置文件:<PARAM name="dataNode1" value="/gaussdb/data/db1"/>。
cd /gaussdb/data/db1
vi pg_hba.conf
输入“:90”找到对应位置,然后输入“i”切换到INSERT模式,将“host all all 192.168.0.132/32 trust”修改为“host all all 192.168.0.132/32 sha256”。
将以下内容添加进pg_hba.conf文件,完成后按下“Esc”键,退出INSERT模式,输入“:wq”后回车保存。
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 192.168.0.19/32 sha256
host all all 0.0.0.0/0 sha256
# IPv6 local connections:
host all all ::1/128 trust
使用omm用户登陆,使用gs_ctl将策略生效。
su - omm
gs_ctl reload -D /gaussdb/data/db1/
返回结果为:
[2020-07-23 15:39:55.398][71828][][gs_ctl]: gs_ctl reload ,datadir is -D "/gaussdb/data/db1"
server signaled
注:如果之前没有启动过数据库,返回结果如下,继续操作即可:
[2021-04-27 17:02:59.640][15354][][gs_ctl]: gs_ctl reload ,datadir is /gaussdb/data/db1
[2021-04-27 17:02:59.640][15354][][gs_ctl]: PID file "/gaussdb/data/db1/postmaster.pid" does not exist
[2021-04-27 17:02:59.640][15354][][gs_ctl]: Is server running?
修改数据库监听地址。
在GS_HOME中,本实验中数据库GS_HOME设置的为/gaussdb/data/db1。
cd /gaussdb/data/db1
vi postgresql.conf
输入“:60”找到对应位置,然后输入“i”切换到INSERT模式,将listen_addresses的值修改成为*,修改后按下“Esc”键,退出INSERT模式,输入“:wq”后回车保存。。
#listen_addresses = '192.168.0.19' # what IP address(es) to listen on;
listen_addresses = '*'
修改完成后重启数据库生效(-D后面的数据库默认路径,需要根据实际情况进行修改)。
gs_ctl restart -D /gaussdb/data/db1/
数据源安装配置
下载unixODBC源码包。
获取参考地址:Download unixODBC from SourceForge.net
下载后的文件名为:unixODBC-2.3.0.tar.gz
下载客户端openGauss ODBC驱动包。
arm版获取参考地址:https://opengauss.obs.cn-south-1.myhuaweicloud.com/1.1.0/arm/openGauss-1.1.0-ODBC.tar.gz
华为课程提供的openeuler版本windows虚拟机使用的是x64版本:https://opengauss.obs.cn-south-1.myhuaweicloud.com/1.1.0/x86/openGauss-1.1.0-ODBC.tar.gz
其他版本请自行在openGauss官网下载,经测试2.0.0版本的opengauss应安装1.1.0的驱动。
下载后的文件名为:openGauss-1.1.0-ODBC.tar.gz
上传unixODBC源码包、ODBC驱动包。
通过文件传输工具(如:WinSCP、XFTP等),将unixODBC源码包、ODBC驱动包二个包上传至数据库服务器/usr/local目录下。如果后续操作权限不够,提示permission denied,请在winscp或者通过命令行将loacl文件夹循环设定为755或7777.
安装unixODBC。
为了操作方便,可以通过SSH工具(如:putty、Xshell等)连接到数据库服务器,进行安装,具体操作如下:
先解压安装包。
cd /usr/local
tar -zxvf unixODBC-2.3.0.tar.gz
unixODBC-2.3.0/
unixODBC-2.3.0/ini/
unixODBC-2.3.0/ini/iniPropertyUpdate.c
unixODBC-2.3.0/ini/iniProperty.c
unixODBC-2.3.0/ini/iniOpen.c
……………………….
进行配置。
cd unixODBC-2.3.0
./configure --enable-gui=no --build=aarch64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
……………………….
进行make编译。
make
make all-recursive
make[1]: Entering directory '/usr/local/unixODBC-2.3.0'
Making all in extras
make[2]: Entering directory '/usr/local/unixODBC-2.3.0/extras'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/usr/local/unixODBC-2.3.0/extras'
……………………….
进行make install编译安装。
make install
Making install in extras
make[1]: Entering directory '/usr/local/unixODBC-2.3.0/extras'
make[2]: Entering directory '/usr/local/unixODBC-2.3.0/extras'
make[2]: Nothing to be done for 'install-exec-am'.
make[2]: Nothing to be done for 'install-data-am'.
make[2]: Leaving directory '/usr/local/unixODBC-2.3.0/extras'
make[1]: Leaving directory '/usr/local/unixODBC-2.3.0/extras'
……………………….
将openGauss-1.0.0-ODBC.tar.gz解压到“/usr/local/lib”目录下。
cd /usr/local
tar -zxvf /usr/local/openGauss-1.1.0-ODBC.tar.gz -C /usr/local/lib
./lib/
./lib/libodbcinst.so.2
./lib/libpq.so.5
./lib/libpgport_tool.so
./lib/libcom_err_gauss.so
./lib/libodbcinst.so
./lib/libcom_err_gauss.so.3.0
./lib/libkrb5_gauss.so
……………………
将openGauss-1.0.0-ODBC.tar.gz解压后lib目录中的库拷贝到“/usr/local/lib”目录下。
cd /usr/local/lib/odbc/lib
ll
total 1.6M
-rwxr-xr-x 1 root root 1.3K Oct 12 02:12 psqlodbca.la
-rwxr-xr-x 1 root root 766K Oct 12 02:12 psqlodbca.so
-rwxr-xr-x 1 root root 1.3K Oct 12 02:12 psqlodbcw.la
-rwxr-xr-x 1 root root 772K Oct 12 02:12 psqlodbcw.so
cp *.* /usr/local/lib
配置ODBC驱动文件。
在“/usr/local/etc/odbcinst.ini”文件中追加以下内容。
[GaussMPP]
Driver64=/usr/local/lib/psqlodbcw.so
setup=/usr/local/lib/psqlodbcw.so
具体如下:
vi /usr/local/etc/odbcinst.ini
[GaussMPP]
Driver64=/usr/local/lib/psqlodbcw.so
setup=/usr/local/lib/psqlodbcw.so
配置数据源文件。
在“/usr/local/etc/odbc.ini ”文件中追加以下内容。
[MPPODBC] (数据源名称)
Driver=GaussMPP (驱动名称)
Servername=(数据库Server IP)
Database= (数据库名)
Username= (数据库用户名)
Password= (数据库用户密码)
Port=(数据库监听端口)
Sslmode=allow
具体如下:
vi /usr/local/etc/odbc.ini
用于疫情防控信息管理系统的设置如下(无需删除多余的空行)
[MPPODBC]
Driver=GaussMPP
Servername=192.168.56.101 请更改为实际的本机ip
Database=yqfk
Username=yjh
Password=Happy123
Port=26000
Sslmode=allow
在客户端配置环境变量。
本实验的客户端与数据库在同一台服务器。
在root的.bashrc文件中追加以下内容。
export LD_LIBRARY_PATH=/usr/local/lib/:/usr/local/lib/lib:$LD_LIBRARY_PATH
export ODBCSYSINI=/usr/local/etc
export ODBCINI=/usr/local/etc/odbc.ini
具体如下:
cd ~
vi ~/.bashrc
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
export LD_LIBRARY_PATH=/usr/local/lib/:/usr/local/lib/lib:$LD_LIBRARY_PATH
export ODBCSYSINI=/usr/local/etc
export ODBCINI=/usr/local/etc/odbc.ini
使用环境变量生效。
source ~/.bashrc
测试数据源配置
执行isql -v MPPODBC (数据源名称)命令。
isql -v MPPODBC
如果显示如下信息,表明配置正确,连接成功。
[omm@db1 ~]$ isql -v MPPODBC
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
以下内容仅供参考,对于配置和测试疫情防控信息管理系统项目以下部分应以说明文档的步骤为准。以下内容共其他开发者参考
配置Windows odbc
Windows操作系统自带ODBC数据源管理器,无需用户手动安装管理器便可直接进行配置。
操作步骤
下载客户端GaussDB(for openGauss)驱动程序并进行安装:
下载地址:https://dbs-download.obs.cn-north-1.myhuaweicloud.com/rds/GaussDB_opengauss_client_tools.zip
在本地(例如D:/download)下载ZIP文件后进行解压缩,解压缩后文件如下。
由于本实验openGauss安装在ECS(openEuler ARM)上,所以进入Euler2.8_arm_64文件夹,显示如下:
之前我做作业的时候用的是ecs,所以是写的arm,如果使用虚拟机验证方案则使用Euler2.5 x86-64文件夹下的安装包(提交的作业文档根目录已经放有适合x86虚拟机的驱动安装包)。
解压缩GaussDB-Kernel-V500R001C10-Windows-Odbc.tar.gz文件,显示如下:
点击psqlodbc.msi进行安装:(delphi7默认为32位程序,安装32位的即可)
以下均进行32位安装,图片是华为文档提供的没有逐个进行更改,也可以选择32位和64位均配置好也可以
默认设置,直到安装完毕。
打开驱动管理器。
在配置数据源时,请使用对应的驱动管理器(假设操作系统安装盘符为C盘,如果是其他盘符,请对路径做相应修改):
64位操作系统上进行64位程序开发,安装64位驱动程序后,使用64位的驱动管理器:C:\Windows\System32\odbcad32.exe 或者直接使用“控制面板 > 管理工具 > ODBC 数据源(64 位)。
应在32位管理器上进行安装
配置数据源。
在打开的驱动管理器上,选择“用户DSN > 添加 > PostgreSQL Unicode(x64)”,然后进行配置:
Data Source:openGauss (数据源名称,可以自定义)。
Database:postgres (需要连接的Datebase名称)。
Server:openGauss数据库服务器的公网IP,请根据实际情况填写。
Pot:26000 (端口号)。
User Name:dbuser (连接数据库的用户名,不能使用omm用户,需要在数据库中创建)
Password:dbuser用户的密码,请根据实际情况填写。
验证并保存设置。
点击Test,显示 Connection successful 表示设置成功:
点击保存:
配置成功!
- DELPHI7通过ODBC连接数据库
操作步骤
进行到这一步之前需要先安装delphi7,delphi10的操作也大同小异,也可以。使用ADO组件里的TADOConnect,使用FireDAC或者UniDAC的方法请自行探索,实测openGauss2.0不能通过UniDAC正确连接。
图片中的第一个就是,双击添加ADOConnect到你的窗口任意地方即可(程序编译运行时不会显示),如图。
双击ADOC进入配置页面,选择使用连接字符串:
点击生成,如图选择 ODBC
点击下一页,选择自己刚刚添加在ODBC管理器里的数据源名称,如果没找到就是32位/64位选择错了,直接安装另一种驱动重新配置即可,不需要卸载原有驱动。
按照图片选择即可,之后点测试链接,如果连接完成直接点确定退出即可。
按照以上配置之后会发现程序每次运行都会弹出很烦人的登陆数据库的窗口,如图设置ADOC即可去掉每次弹窗:
(其实就是把LoginPrompt设置为False就可以了)
连接成功,本教程结束。