Linux下通过ODBC连接mysql orical sqlServer数据库
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
Linux下通过ODBC连接mysql orical sqlServer数据库相关推荐
- linux下使用Navicat连接MySQL
linux下使用Navicat连接MySQL 文章目录 linux下使用Navicat连接MySQL 1.为了方便,使用xshell连接自己的服务器: 2.输入指令: 3.yum更新,安装mysql: ...
- linux下c语言调用mysql,Linux下C语言连接MySQL
首先保证安装: 1:安装MySQL:sudo apt-get install mysql-server mysql-client 2:安装MySQL开发包:sudo apt-get install l ...
- Linux下的C#连接Mysql数据库
今天在尝试在 Linux 系统下使用C#连接数据库,发现网上这方面的信息很少,所以就写一篇博客记录一下. Linux下这里使用的是mono. 首先是缺少Mysql.Data.dll这个库的,所以需要安 ...
- linux下使用odbc连接mysql_Linux环境下通过ODBC访问MSSql Server
为了解决Linux系统连接MSSql Server的问题,微软为Linux系统提供了连接MSSql Server的ODBC官方驱动.通过官方驱动,Linux程序可以方便地对MSSql Server进行 ...
- Linux 下使用Java连接 mysql
首先安装 mysql 的java驱动 http://dev.mysql.com/downloads/connector/j/ 然后把 mysql-connector-java-5.1.17-bin.j ...
- c mysql linux,linux上C语言连接mysql
linux下C语言连接mysql 环境:fedora16 1)安装:# yum install mysql mysql-devel //mysql-devel同样需要安装,开发中要用到/usr/i ...
- mysql的odbc连接字符串_MySQL :: linux ODBC连接mysql
linux ODBC连接mysql Posted by: Junquan Liu Date: August 28, 2013 11:38PM 想通过oracle连接mysql,根据网上的指引,先安装u ...
- centos odbc mysql_Centos下安装并配置ODBC连接MySQL 【转】
找到一篇英文的关于Linux下ODBC的安装和配置,在此根据自己的需要截取部分记录一下. 安装并配置ODBC ODBC连接器是一个数据库抽象层,它可以让Asterisk与广泛的数据库进行通信,而无需开 ...
- php 远程连接 sqlserver,Linux下PHP远程连接SqlServer数据库
最近项目因需要,必须连SqlServer数据库,折腾了两天,弄好了.回头看,其实挺简单的.记录一下. 首先,因为是远程连接,所以 SqlServer的允许远程相关的设置必须开启,防火墙和服务器上相应的 ...
最新文章
- CString、std::string格式化字符串
- CTFshow 命令执行 web61
- 【iOS-cocos2d-X 游戏开发之十三】cocos2dx通过Jni调用Android的Java层代码(下)
- [POI2002][HAOI2007]反素数
- 一个好用的临时文件上传和下载工具 - 奶牛快传
- java有var吗_java – Var和Var之间的区别
- Packet Tracer 5.0 建构 CCNA 实验攻略——路由器实现 Vlan 间通信
- C++编译问题-检测到 Mac 文件格式: 请将源文件转换为 DOS 格式或 UNIX 格式
- RocketMQ消息存储结构分析及相对于Kafka的优势
- 如何才能快速匹配到大号?
- Linux-I/O重定向和管道
- Python卸载报错:No Python 3.8 installation was detected
- 【NodeJS】20 koa 企业级Cms内容管理系统-XMind功能分析、ERStudio设计数据库ER图
- CSS 基础教程:CSS 选择器
- 量化投资学习-30:股性与人性,从傅里叶变换谈谈股市大V的操作风格的观察
- poco mysql 编译_Poco介绍及编译
- 为什么打印还要另存为_为什么打印时会出现另存为保存文件
- 布局未来移动出行,需要怎样的互联汽车解决方案?
- [Un-Routed Net Constraint Violation] 问题解决
- A4988驱动步进电机
热门文章
- 上交电院信息安全比计算机哪个好,上海交通大学-电子信息与电气工程学院-电子信息与电气工程学院...
- android高德地图获取海拔_在vue中使用高德地图开发,以及AMap的引入?
- 蓝湖导出android代码,蓝湖一键生成整页代码,帮开发留住头发
- uboot之bootcmd环境变量分析
- 超级电容作为备用电源使用及其注意点
- 重庆已拥有机器人企业和研发机构,超300家
- arch linuxu安装 java,Arch Linux 安装博通 BCM4360 驱动(Arch Linux, Ubuntu, Debian, Fedora…)
- 解决armbian 下ap6255 wifi不能使用问题
- AP6255 wifi sdio识别过程
- 工业控制应用程序二进制的秘密