Linux下Mysql的odbc配置

安装配备在此以前,必要先大致领会一下MyODBC的布局.
MyODBC体系结营造设结构在5个零零件上,如下图所示:

 图片 1图片 2

 

Driver Manager:

 

负责管理应用程序和驱动程序间的通讯,主要效率包蕴:深入分析DSN
(数据源名称,ODBC的数据源名称在ODBC.INI文件中布署卡塔尔(英语:State of Qatar),加载和卸载驱动程序,管理ODBC调用,将其传递给驱动程序.

 

Connector/ODBC(MyODBC驱动程序卡塔尔国:

 

兑现ODBC
API所提供的魔法,它担当管理ODBC函数调用,将SQL伏乞提交给MySQL服务器,并将结果再次来到给使用程序.

 

ODBC.INI

ODBC.INI是ODBC配置文件,记录了连年到服务器所需的驱动音信和数据库新闻。Driver
Manager将选用它来规定加载哪个驱动程序(使用数据源名DSN)。驱动程序将基于钦定的DSN来读取连接参数。

 

在Linux下布署mysql ODBC须求有以下步骤:

1.     安装Driver Manager ,本案例使用unixODBC来作为Driver Manager.

2.      安装MySQL驱动程序,本案例使用Connector/ODBC.

3.      配置ODBC.INI

 

 

第一步:下载安装包.

 

急需下载多个安装包unixODBC 2.3.0和mysql Connector/ODBC 3.51

unixODBC源码包:

 

第二步

选择

版本:5.1.11

平台:Oracle&Red Hat Linux6

下载:mysql-connector-odbc-5.1.11-linux-el6-x86-64bit.tar.gz

 

 

第二步:安装unixODBC

 

tar -zxvf unixODBC-2.3.4.tar.gz

cd unixODBC-2.3.4

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

make

make install

 

设置完结后,能够在/usr/bin目录下有上面包车型大巴文书

-rwxr-xr-x 1 root root      75312 Nov 1 16:22 odbcinst

-rwxr-xr-x 1 root root      10922 Nov 1 16:22 odbc_config

-rwxr-xr-x 1 root root      37650 Nov 1 16:22 iusql

-rwxr-xr-x 1 root root      44400 Nov 1 16:22 isql

-rwxr-xr-x 1 root root      95903 Nov 1 16:22 dltest

 

在/usr/local/lib目录上面有那个文件

 

-rwxr-xr-x 1 root root 422955 Nov 1 16:22 libodbcinst.so.1.0.0

lrwxrwxrwx 1 root root     20 Nov 1 16:22 libodbcinst.so.1 ->
libodbcinst.so.1.0.0

lrwxrwxrwx 1 root root     20 Nov 1 16:22 libodbcinst.so ->
libodbcinst.so.1.0.0

-rwxr-xr-x 1 root root    981 Nov 1 16:22 libodbcinst.la

-rwxr-xr-x 1 root root 1691572 Nov 1 16:22 libodbc.so.1.0.0

lrwxrwxrwx 1 root root     16 Nov 1 16:22 libodbc.so.1 ->
libodbc.so.1.0.0

lrwxrwxrwx 1 root root     16 Nov 1 16:22 libodbc.so ->
libodbc.so.1.0.0

-rwxr-xr-x 1 root root    957 Nov 1 16:22 libodbc.la

-rwxr-xr-x 1 root root 489405 Nov 1 16:22 libodbccr.so.1.0.0

lrwxrwxrwx 1 root root     18 Nov 1 16:22 libodbccr.so.1 ->
libodbccr.so.1.0.0

lrwxrwxrwx 1 root root     18 Nov 1 16:22 libodbccr.so ->
libodbccr.so.1.0.0

-rwxr-xr-x 1 root root    969 Nov 1 16:22 libodbccr.la

 

 

第三步:安装mysql Connector/ODBC

 (odbc
5.3及以上是libmyodbc5a.so和libmyodbc5w.so。此中c5a是Ansi版,c5w是Unicode版)

tar -zxvf mysql-connector-odbc-5.1.11-linux-el6-x86-64bit.tar.gz

cd mysql-connector-odbc-5.1.11-linux-el6-x86-64bit/lib

cp  libmyodbc5.so  /usr/local/lib

cd ..

cd bin

1、注册驱动

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

 

假定注册的时候报错找不到libodbc.so.2,可是早先真的装成功了unixodbc,大概是因为系统找不到/usr/local/lib库目录,需求丰盛系统找出库目录路线:

#将/usr/local/lib直接添加在配置文件里
vi /etc/ld.so.conf
#重新缓存配置文件(为了加快程序执行时对共享库的定位速度,避免使用搜索路径查找共享库的低效率,所以是直接读取库列表文件/etc/ld.so.cache缓存文件并从中进行搜索的)
ldconfig 

 

第四步:配置ODBC.INI:

 

编辑文件/usr/local/etc/odbc.ini,把下边包车型大巴源委丰盛去.需求在意一下,不一样版本mysql驱动的配备情势,有微小差别.
本案例使用的本子是mysql Connector 3.51

 

[mysqlDSN]

Driver      = /usr/local/lib/libmyodbc5.so

Description = MyODBC 5 Driver DSN

SERVER      = 172.31.108.133

PORT        = 3306

USER        = root

Password    = 123456

Database    = PM

OPTION      = 3

charset=UTF8

 

第五步:设置情状变量

 

export DBCINI=/usr/local/etc/odbc.ini

export DBCSYSINI=/usr/local/etc

第六步:重启Computer

reboot

第七步:测量试验ODBC配置是或不是中标

 

Isql是unixODBC带的二个ODBC顾客端访问工具,使用isql
+数据源名来访问目的数据库.

只要ODBC配置不错,会展示上面包车型地铁分界面.在SQL>提醒符下输入SQL语句询问数据库.

 

# isql mysqlDSN

+—————————————+

| Connected!                           |

|                                      |

| sql-statement                        |

| help [tablename]                     |

| quit                                 |

|                                      |

+—————————————+

 

碰到的标题:

在第三步安装mysql connector/ODBC中的注册驱动中,小编老是会现身./myodbc-installer: error while loading shared
libraries: libodbc.so.2: cannot open shared object file: No such file or
directory.这种错误,后来开掘错误有两点:

1)小编下载的是mysql-connector-5.3.6,只怕版本比较高,而本人第一下载用的是unixODBC-2.3.0,版本相当的低,里面未有libodbc.so.2这些库文件(能够用find
/ -name libodbc.so.2来查)。后来下载了叁个unixODBC-2.3.4就好了。

2)改了版本之后,作者发觉依然有其一错误,在网络查了下,说是程序查找暗许路线为/lib和/usr/lib,而笔者的libmyodbc5w.so和libmmyodbc5a.so都在/usr/local/lib中,所以查不到,所以需求安装一下共享库路线,以下小编贴一下英特网查的剧情:

一般我们在Linux下执行某些外部程序的时候可能会提示找不到共享库的错误, 比如:

tmux: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory

原因一般有两个, 一个是操作系统里确实没有包含该共享库(lib*.so.*文件)或者共享库版本不对, 遇到这种情况那就去网上下载并安装上即可. 

另外一个原因就是已经安装了该共享库, 但执行需要调用该共享库的程序的时候, 程序按照默认共享库路径找不到该共享库文件. 

所以安装共享库后要注意共享库路径设置问题, 如下:

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

ldconfig命令的用途, 主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下, 搜索出可共享的动态链接库(格式如lib*.so*), 进而创建出动态装入程序(ld.so)所需的连接和缓存文件. 缓存文件默认为/etc/ld.so.cache, 此文件保存已排好序的动态链接库名字列表. 

2) 如果共享库文件安装到了/usr/local/lib(很多开源的共享库都会安装到该目录下)或其它"非/lib或/usr/lib"目录下, 那么在执行ldconfig命令前, 还要把新共享库目录加入到共享库配置文件/etc/ld.so.conf中, 如下:

# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
# echo "/usr/local/lib" >> /etc/ld.so.conf
# ldconfig

3) 如果共享库文件安装到了其它"非/lib或/usr/lib" 目录下,  但是又不想在/etc/ld.so.conf中加路径(或者是没有权限加路径). 那可以export一个全局变量LD_LIBRARY_PATH, 然后运行程序的时候就会去这个目录中找共享库. 

LD_LIBRARY_PATH的意思是告诉loader在哪些目录中可以找到共享库. 可以设置多个搜索目录, 这些目录之间用冒号分隔开. 比如安装了一个mysql到/usr/local/mysql目录下, 其中有一大堆库文件在/usr/local/mysql/lib下面, 则可以在.bashrc或.bash_profile或shell里加入以下语句即可:

export LD_LIBRARY_PATH=/usr/local/mysql/lib:$LD_LIBRARY_PATH    

一般来讲这只是一种临时的解决方案, 在没有权限或临时需要的时候使用.

4)如果程序需要的库文件比系统目前存在的村文件版本低,可以做一个链接
比如:
error while loading shared libraries: libncurses.so.4: cannot open shared
object file: No such file or directory

ls /usr/lib/libncu*
/usr/lib/libncurses.a   /usr/lib/libncurses.so.5
/usr/lib/libncurses.so  /usr/lib/libncurses.so.5.3

可见虽然没有libncurses.so.4,但有libncurses.so.5,是可以向下兼容的
建一个链接就好了
ln -s  /usr/lib/libncurses.so.5.3  /usr/lib/libncurses.so.4

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注