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/[email protected]: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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章