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