Linux下Mysql的odbc配置
在安装配置之前,需要先大概了解一下MyODBC的架构. MyODBC体系结构建立在5个组件上,如下图所示:
Driver Manager:
负责管理应用程序和驱动程序间的通信,主要功能包括:解析DSN (数据源名称,ODBC的数据源名称在ODBC.INI文件中配置),加载和卸载驱动程序,处理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源码包:ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.0.tar.gz
第二步
http://dev.mysql.com/downloads/connector/odbc/3.51.html%23downloads
选择
版本: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
第六步:重启电脑
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.: cannot open shared object file: No such file or directory 原因一般有两个, 一个是操作系统里确实没有包含该共享库(lib*.so.*文件)或者共享库版本不对, 遇到这种情况那就去网上下载并安装上即可. 另外一个原因就是已经安装了该共享库, 但执行需要调用该共享库的程序的时候, 程序按照默认共享库路径找不到该共享库文件. 所以安装共享库后要注意共享库路径设置问题, 如下: ) 如果共享库文件安装到了/lib或/usr/lib目录下, 那么需执行一下ldconfig命令 ldconfig命令的用途, 主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下, 搜索出可共享的动态链接库(格式如lib*.so*), 进而创建出动态装入程序(ld.so)所需的连接和缓存文件. 缓存文件默认为/etc/ld.so.cache, 此文件保存已排好序的动态链接库名字列表. ) 如果共享库文件安装到了/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
Linux下Mysql的odbc配置的更多相关文章
- Linux下MySQL安装和配置
--Linux下MySQL安装和配置 ---------------------------2014/05/18 Linux下MySQL的配置和安装 本文的安装采用 rpm 包安装 1.首先在官网下载 ...
- Linux 下 mysql的基本配置
Linux 下 mysql的基本配置 2013年02月27日 ⁄ MySQL ⁄ 共 3000字 ⁄ 暂无评论 ⁄ 被围观 2,483 views+ 1. Linux mysql安装: $ yu ...
- Linux下MySQL安装及配置
Linux下MySQL安装及配置 安装MySQL Ubuntu系统中,直接使用apt install的方式去安装MySQL的服务端和客户端,MySQL的客户端必须安装,否则无法通过命令连接并操作MyS ...
- linux 下 mysql安装和配置
最近在学习R语言,看到R与数据库交互这一部分,就自己动手实践了一下,数据库选择的是mysql,主要记录下linux下怎么安装mysql. 网上的很多资料都有相关的文章,这里只是记录下自己安装过程中遇到 ...
- (0.2)linux下Mysql的安装配置与管理入门(目录篇)
本章学习内容: 1.基于Linux平台的Mysql项目场景介绍 1.1.互联网各类网站.购物网站.门户网站.博客系统.IDC,云平台,VPS,虚拟主机空间,论坛,嵌入式. 2.mysql数据库运行环境 ...
- Linux下mysql的主从复制配置
1.准备两台数据库环境,或者单台多实例环境,能正常启动和登录. 数据库的安装和多实例配置请参考https://www.cnblogs.com/qiuhom-1874/p/9757061.html. 2 ...
- Linux下MySQL主从同步配置
Centos6.5 MySQL主从同步 MySQL版本5.6.25 主服务器:centos6.5 IP:192.168.1.101 从服务器:centos6.5 IP:192.168.1.102 一. ...
- Linux下MySQL远程链接配置
配置步骤: 1).首先进入数据库,使用系统数据库mysql mysql -u root -p mysql 2).接着对系统数据库的root账户设置远程访问的密码,与本地的root访问密码并不冲突 gr ...
- linux 下mysql/php编译配置参数
mysql cmake 编译参数 cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql \-DSYSCONFDIR=/opt/mysql/etc \-DMYSQL_DATAD ...
随机推荐
- oracle数据字典-权限-角色-参数
每个数据库都提供了各自的数据字典的方案,虽然形式不同,但是目的和作用是一样的,比如在mysql里数据字典是在information_schema 里表现的,sqlserver则是在sys这个系统sch ...
- More C++ Idioms
Table of Contents Note: synonyms for each idiom are listed in parentheses. Adapter Template TODO Add ...
- create-react-app 搭建的项目中,使用 CSS Modules
create-react-app 搭建的项目中,使用 CSS Modules: 修改config目录下 webpack.config.dev.js 和 webpack.config.prod.js 文 ...
- struts中的dojo控件sx:submit布局问题
想在一个四列的表格中插入两个按钮,希望实现下面的布局效果: 其中保存按钮为<sx:submit />控件.按照下面的代码布局: <tr><td align="c ...
- mysql update 将一个表某字段设为另一个表某字段的值
表新添加了一个字段,毫无疑问是空值.所以想将另一个表的某个字段的值写入到修改的表中. sql语句不复杂,但还是记录一下,因为也查了一会,以后说不定还会用到. mysql> update cent ...
- c#根据手机号查归属地
可调用接口参考地址(没有免费的午餐): https://www.juhe.cn/docs/api/id/11 http://vip.showji.com/locating/?m=13606401549 ...
- hadoop HA分布式集群搭建
概述 hadoop2中NameNode可以有多个(目前只支持2个).每一个都有相同的职能.一个是active状态的,一个是standby状态的.当集群运行时,只有active状态的NameNode是正 ...
- PI接口无法使用.net4以上的解决方法:无法嵌入互操作类型“PISDKClass”。请改用适用的接口。
Interop type 'PISDKClass' cannot be embedded. Use the applicable interface instead. .net开发中,有时候在引用某些 ...
- js-signals学习以及应用
说在前面:写js时候,当一个变量一旦发生变化,就自动执行相应的程序,而不用手动执行,js-signals可以很方便的解决这个问题. 一.js-signals简介 js-signals是用于在JavaS ...
- 黄聪:TortoiseGit(乌龟git)保存用户名密码的方法
1.在项目文件夹右键--tortoiseGit--设置 2.编辑全局.git/config 3.加上这行代码 里面会有你先前配好的name 和email,只需在下面加一行 [credential] h ...