Linux下通过ODBC连接mysql orical sqlServer数据库

本文详细介绍了如何在Linux(以Red Hat 6.1 32位系统为例)中安装和配置UnixODBC,以及如何通过UnixODBC连接MySQL、Oracle和SQLServer数据库。步骤包括UnixODBC的下载、安装、测试,以及针对MySQL的Connector/ODBC安装和配置,Oracle客户端的安装和环境变量配置,以及FreeTDS驱动的安装和配置。
摘要由CSDN通过智能技术生成

 

2017-07-18 22:21:49 mei777387 阅读数 8528更多

分类专栏: Linux,数据库,编程 数据库 编程 Linux

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/mei777387/article/details/75331428

概述:

ODBC是Open Database Connect 即开发数据库互连的简称,它是一个用于访问数据库的统一界面标准。ODBC引入一个公共接口以解决不同数据库潜在的不一致性,从而很好的保证了基于数据库系统的应用程序的相对独立性。

很多程序员都已经体会到了在Windows平台下通过ODBC进行数据库编程开发的益处,其实在Linux/Unix下现在也有了自己的ODBC,可以使我们的数据库编程就像在Windows平台下一样简单。

下面介绍Linux下的ODBC,本文以Red Hat 6.1 32位系统下的unixODBC-2.3.0为例。

UinxODBC安装:

1.下载UnixODBC安装包

下载地址:ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.0.tar.gz

下载安装包unixODBC-2.3.0.tar.gz放到/usr/local下。

2.安装

运行下述命令:

cd /usr/local

tar zxvf unixODBC-2.3.0.tar.gz

cd unixODBC-2.3.0

 

./configure --prefix=/usr/local/unixODBC-2.3.0 --includedir=/usr/include --libdir=/usr/lib --bindir=/usr/bin --sysconfdir=/etc

make

make install

安装完成

3.测试

运行命令:

odbcinst -j

a.安装成功

终端会显示UnixODBC相关信息

 

 

 

unixODBC所需的头文件都被安装到了/usr/inlucde下,编译好的库文件安装到了/usr/lib下,与unixODBC相关的可执行文件安装到了/usr/bin下,配置文件放到了/etc下。安装完成

b.失败

终端显示:

 

odbcinst: error while loading shared libraries: libodbcinst.so.2: cannot open shared object file: No such file or directory

 

错误处理:

(1)如果库文件安装到了/lib或/usr/lib目录下,那么需在该目录下执行一下ldconfig命令

(2)其他情况请参阅:http://blog.csdn.net/dongweizu33/article/details/54616258

 

unixODBC连接MYSQL:

1.下载mysql Connector/ODBC安装包

地址:https://dev.mysql.com/downloads/connector/odbc/

打开链接后,选择自己所需的版本。这里选择的是

 

版本:5.1.12

平台:Oracle&Red Hat Linux6

下载:mysql-connector-odbc-5.1.12-linux-el6-x86-32bit.tar.gz

将下载的安装包放到/usr/local。

2.安装mysql Connector/ODBC

 

依次运行以下命令:

cd /usr/local

tar zxvf mysql-connector-odbc-5.1.12-linux-el6-x86-32bit.tar.gz

 

cd mysql-connector-odbc-5.1.12-linux-el6-x86-32bit/lib

cp  libmyodbc5.so  /usr/local/lib

cd ../

cd bin

./myodbc-installer  -d -a -n "MySQL ODBC 5.1 Driver" \-t"DRIVER=/usr/local/lib/libmyodbc5.so;SETUP=/usr/local/lib/libmyodbc5.so"

3.配置odbc.ini文件(文件位于/etc中)

根据个人的实际需求配置,这里我配置的是192.168.1.134上的test数据库,使用UTF_8字符集

 

[134db]

Description = mysql

Driver = MySQL ODBC 5.1 Driver

Server = 192.168.1.134

Database = test

Port = 3306

USER = root

Password = 0819

Socket =

Option =

Stmt =

CHARSET  = UTF8

4.测试

运行命令

   isql 134db -v

   

成功!

unixODBC连接ORCALE:

   1.下载oracle客户端安装包

下载:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

根据具体要求下载相应的安装包,本文下载的是32位的12.1.0.2.0-1版

oracle-instantclient12.1-basic-12.1.0.2.0-1.i386.rpm

 

oracle-instantclient12.1-devel-12.1.0.2.0-1.i386.rpm

oracle-instantclient12.1-odbc-12.1.0.2.0-1.i386.rpm

oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.i386.rpm

  2.安装oracle客户端

 

rpm -ivh oracle-instantclient12.1-basic-12.1.0.2.0-1.i386.rpm

rpm -ivh oracle-instantclient12.1-devel-12.1.0.2.0-1.i386.rpm

rpm -ivh oracle-instantclient12.1-odbc-12.1.0.2.0-1.i386.rpm

rpm -ivh oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.i386.rpm

如果系统不支持rpm格式安装 将上述四个rpm格式都需转换成deb格式:

安装alien:执行命令

sudo apt-get install alien

利用alien转换rpm为deb格式:

sudo alien oracle-instantclient12.1-basic-12.1.0.2.0-1.i386.rpm

sudo alienoracle-instantclient12.1-devel-12.1.0.2.0-1.i386.rpm

sudo alien oracle-instantclient12.1-odbc-12.1.0.2.0-1.i386.rpm

sudo alien oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.i386.rpm

安装(deb格式):

sudo dpkg -i oracle-instantclient12.1-basic_12.1.0.2.0-2_amd32.deb

sudo dpkg -i oracle-instantclient12.1-devel_12.1.0.2.0-2_amd32.deb

sudo dpkg -i oracle-instantclient12.1-odbc_12.1.0.2.0-2_amd32.deb

sudo dpkg -i oracle-instantclient12.1-sqlplus_12.1.0.2.0-2_amd32.deb

  3.配置orcale环境变量等

 

填加tnsanme信息(根据实际情况配置,32bit与64bit的目录不同):

mkdir -p /usr/lib/oracle/12.1/client/network/admin

vi /usr/lib/oracle/12.1/client/network/admin/tnsnames.ora

在tnsnames.ora文件中写入:

#tnames.ora Network Configuration File: /usr/lib/oracle/12.1/client/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

ORCL =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.134)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

 

配置环境信息(根据实际情况配置,32bit与64bit的目录不同):

打开/etc/profile,在其中的export行后面添加

export ORACLE_BASE=/usr/lib/oracle/12.1

export ORACLE_HOME=$ORACLE_BASE/client

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

export SQLPATH=/usr/lib/oracle/12.1/client/network/admin

export TNS_ADMIN=/home/oracle/network/admin

 

运行source /etc/profile使profile立即生效

 

将/usr/lib/oracle/12.1/client/lib/(此为32bit系统下的目录,64bit系统目录为/usr/lib/oracle/12.1/client64/lib/)拷贝到/usr/lib/中

cp /usr/lib/oracle/12.1/client/lib/ /usr/lib/

执行:

cd /usr/lib

ldconfig

再次运行

su -

vi .bash_profile

加入下面这个:
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin

  4.验证orcale客户端是否安装成功:

sqlplus sdj/sdj@192.168.1.134:1521/orcl

如果出现“ORA-21561: OID generation failed”错误,说明主机名有问题,可用:

hostname localhost.localdomain

修改主机名。

  5.配置odbc.ini文件与odbccinst.ini文件

在odbc.ini文件中写入

[ORCL]

Description= ORCALE Driver

driver= ORCALE Driver

server= 192.168.1.134

Port= 1521

ServerName= ORCL

UserID= sdj

Password= sdj

在odbccinst.ini文件中写入

[ORCALE Driver]

Description= ORCALE

Driver=/usr/lib/libsqora.so.12.1

SETUP=/usr/lib/liboramysql12.so

UsageCount=1

CPTimeout=

CPReuse=

   6.测试

isql ORCL -v

提示错误:[01000][unixODBC][Driver Manager]Can't open lib '/usr/lib/libsqora.so.12.1' : file notfound。

处理:

执行

ldd /usr/lib/libsqora.so.12.1

显示有  libodbcinst.so.2 => not found

执行

su -

find / -name libodbcinst*

显示有 /usr/lib/libodbcinst.so.1

执行

cp /usr/lib/libodbcinst.so.1 /usr/lib/libodbcinst.so.2

isql ORCL -v

结果

成功!

 

 

安装FreeTDS驱动
FreeTDS是一款可以用于连接SQLServer和Sybase开源驱动程序,你可以在这里下载。下载完成后需要对源码包进行编译安装,只要将源码包放在当前工作目录下,执行以下命令即可完成安装(如果你的FreeTDS版本不同,请修改命令中的源码包名称)。
tar vxzf freetds-0.91.100.tar.gz
cd freetds-0.91.100
./configure --prefix=/usr/local/freetds 
make
make install
 

配置FreeTDS驱动
安装完成后,我们需要在/etc/freetds/freetds.conf中配置连接SQLServer的信息(不同版本的Linux系统存放文件的位置可能不同,你可以通过locate freetds.conf命令查看FreeTDS配置文件的可能位置)。该文件中默认已经有了配置连接信息的示例,我们只需追加以下信息即可(注意修改host、port为你真实的数据库网络地址与端口)。
[SQLSERVER]                    # TDS服务名称
        host = serverIP                # 数据库网络地址
        port = 1433                # 数据库网络端口
        tds version = 8.0            # TDS版本号
        client charset = UTF-8            # 客户端字符集

接下来我们尝试使用命令tsql -S SQLSERVER -U username来连接SQLServer(其中-S指定了已经配置好的 TDS服务名称,-U指定登录数据库的用户名),连接成功则证明驱动配置正确。如果连接出现错误,很可能是因为tds version设置的不正确,你可以尝试修改该值重新连接。

 

修改unixodbc配置文件
接下来我们需要修改一些配置文件,为unixodbc指明数据库驱动程序所在位置及连接数据库所需要的认证信息。你应该按照实际情况修改下列配置信息中的具体值。
在/etc/odbcinst.ini中配置驱动程序


[FreeTDS]                    # unixodbc驱动名称
Description=FreeTDS driver            # 简介    
Driver=/usr/local/freetds/lib/libtdsodbc.so    # 驱动所在位置

在/etc/odbc.init中配置数据库连接认证
[mssql]                        # DSN名称
Description = sqlserver connection        # 简介
Driver = FreeTDS                # 已经配置好的unixodbc驱动名称
TDS_Version = 8.0                # TDS版本号
Trace = On                    # 是否输出日志信息
TraceFile = stderr                # 日志信息输出位置
Server = serverIP                # 数据库网络地址
Port = 1433                    # 数据库网络端口
User = username                    # 登录数据库的用户名
Password = password                # 登录数据库的用户密码
Database = dbname                # 需要连接的数据库名称
1
2
3
4
5
6
7
8
9
10
11

测试是否能连接成功
现在我们已经完成了所有的配置,只需要一条命令就可以完成连接了(注意替换命令中的用户名与密码)。
isql mssql username password
————————————————
版权声明:本文为CSDN博主「无梦之夜」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_38641983/article/details/82997301

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值