unixODBC安裝 這幾天真是鬱悶死了,基本每天都在編譯安裝QT和unixODBC,無奈總會出現些莫名其妙的錯誤。首先,我承認我Linux玩地不熟,但這些開源軟體產商之間的相容性也太差了吧。所以還是制定個標準比較好,大家都遵守一個約定。從這個意義來說,微軟的壟斷,還是有一定的好處的。
最終QT還是沒有安裝成功,此前有一個版本,經過小的改動已經能編譯安裝成功了,不知為什麼,後來怎麼也安裝不上,暈阿。後來發現,安裝unixODBC可以不啟用QT功能,雖然沒有圖形介面,但核心功能是有的。況且,這個驅動管理器最終還要移植到一個嵌入式作業系統上,相互依賴的組件越多,組件也越難移植。下個星期把unixODBC移植到VxWorks上,估計問題不少......
結合網路上下載的一些資料,把最近工作的的東西總結下。
1.安裝unixODBC組件:
(1).在ubuntu下,利用新立德下載命令,很容易就能安裝unixODBC
apt-get install unixODBC
(2)利用源碼,編譯安裝(我用的版本是unixODBC-2.2.14)
# tar vxzf unixODBC-2.2.14.tar.gz
# cd unixODBC-2.2.14
# ./configure --enable-gui=no (不利用qt畫介面,添加--enable-gui=no)
# make
# make install
通過上面介紹的兩種方法,就把unixODBC組件安裝成功了。
2.測試unixODBC組件是否能用,即是否能通過資料來源訪問資料庫。
(1)安裝mysql,同樣可以利用新立德下載管理工具。
apt-get install mysql-server mysql-client
(2)注意:安裝mysql後,並沒有安裝mysql的odbc驅動,因此,還需下載對應的驅動
apt-get install libmyodbc
(3)寫設定檔,建立自己的資料來源
UNIXODBC的設定檔主要是usr/local/etc/odbcinst.ini以及usr/local/etc/odbc.ini。前者用於配置驅動程式,後者用於儲存系統DSN。剛才安裝了MySQL的驅動程式,需要把它的配置資訊填寫到/etc/odbcinst.ini內。現在開啟你所喜愛的編輯器,編輯/etc/odbcinst.ini:
[MySQL]
Description = MySQL
driver for Linux Driver = /usr/lib/odbc/libmyodbc.so
Setup = /usr/lib/odbc/libodbcmyS.so
FileUsage = 1
配置資訊依次是驅動程式描述、驅動程式位置、配置程式位置、驅動程式使用次數。實際的驅動程式位置依Linux發行版的不同而有所差異。 Ubuntu通常位於/usr/lib/odbc/下。Suse位於/usr/lib/unixODBC/。RedHat等發行版可能有所不同。
然後是配置DSN,接下來我們建立一個名為HustMysqlDB的DSN。編輯usr/local/etc/odbc.ini檔案
[HustMysqlDB]
Description = The Database for HustMysql
Trace = On
TraceFile = stderr
Driver = MySQL
SERVER = localhost
USER = root
PASSWORD = mypassword
PORT = 3306
DATABASE = HustMysql
在設定檔裡,DSN的名字即為Section的名字。在配置資訊中,有一部分配置項是ODBC使用的,另一部分則由驅動程式處理。如果操作完全正確的話,現在ODBC已經成功了。可以試下isql命令操作剛配置的DSN。
(4)測試DSN
$ isql HustMysqlDB -v
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| | +---------------------------------------+
註:-v參數是為了顯示調試資訊,便於出錯時,顯示資訊方便調試。
另外,貼一點關於mysql的常用命令。
1.啟動mysql:mysqld_safe &
2.停止mysql:mysqladmin -uroot -ppassw0rd shutdown 注意,u,p後沒有空格
3. 設定mysql自啟動:把啟動命令加入/etc/rc.local檔案中
4. 允許root遠程登陸:
1)本機登陸mysql:mysql -u root -p (-p一定要有);改變資料庫:use mysql;
2)從所有主機:grant all privileges on *.* to root@"%" identified by "passw0rd" with grant option;
3)從指定主機:grant all privileges on *.* to root@"192.168.11.205" identified by "passw0rd" with grant option; flush privileges;
4) 進mysql庫查看host為%的資料是否添加:use mysql; select * from user;
5. 建立資料庫,建立user:
1) 建庫:create database test1;
2) 建使用者,賦權:grant all privileges on test1.* to user_test@"%" identified by "passw0rd" with grant option;
3)刪除資料庫:drop database test1;
6. 刪除許可權:
1) revoke all privileges on test1.* from test1@"%";
2) use mysql;
3) delete from user where user="root" and host="%";
4) flush privileges;
8. 顯示所有的資料庫:show databases; 顯示庫中所有的表:show tables;
9. 遠程登入mysql:mysql -h ip -u user -p