准备工作

安装ODBC基本组件:

# yum install -y unixODBC unixODBC-devel

安装完成后可用odbcinst -j命令查看安装配置文件所在的位置,有两个比较常用的配置,一个是ODBC驱动配置,默认在/etc/odbcinst.ini,另一个是系统数据源配置,默认在/etc/odbc.ini。

连接MySQL

1. 安装MySQL连接驱动

# yum install -y mysql-connector-odbc

安装好驱动后,驱动信息会自动追加到驱动配置odbcinst.ini中,像这样:

[MySQL]

Description=ODBC for MySQL

Driver=/usr/lib/libmyodbc5.so

Setup=/usr/lib/libodbcmyS.so

Driver64=/usr/lib64/libmyodbc5w.so

Setup64=/usr/lib64/libodbcmyS.so

FileUsage=1

2. 配置MySQL数据源(DSN)

数据源可定义在系统DSN中,也可以定义在用户DSN中,视需要而定。以下是一个配置例子。

[mysql223]

driver = MySQL

server = 192.1.1.223

port = 3306

user = root

password = 11111111

其中:driver是MySQL驱动库的名称,要与odbcinst.ini中配的名字一致,另外也可以直接写.so文件的位置,但不推荐这么做。

如果配置不指定user和password,那么在连接时必须给定,命令行和API都有相应的选项或参数。

3. 连接测试

isql命令格式:isql DSN [user [password]] [options]

如果配置指定了用户名和密码,连接时指定DSN即可:isql mysql223。

在连接时指定用户名和密码:isql mysql223 root 62960909。

连接SQLServer

1. 安装SQLServer连接驱动

# yum install -y freetds freetds-devel

安装好后可用tsql -C查看编译时的选项信息。

如果驱动安装完后没有将驱动信息更新到odbcinst.ini中,则需要手工配置。

[SQLServer]

Description = ODBC for SQLServer

Driver = /usr/lib/libtdsodbc.so

Setup = /usr/lib/libtdsS.so

FileUsage = 1

其中.so文件的路径要与实际安装位置相符。

2. 配置数据源

数据源配置文件为freetds.conf,一般在/etc目录下。以下是个示例:

[sqlsever224]

host = 192.1.1.224

port = 1433

tds version = 7.0

3. 连接测试

# tsql -S sqlserver224 -U test -P test123

连接Oracle

1. 安装驱动

不同版本的Oracle对应驱动版本也不太一样,可到官网下载与数据库版本对应的驱动,至少要安装basic,develop,odbc包,建议安装sqlplus包,便于排障。

# rpm -ivh *.rpm

2. 配置环境变量

export ORACLE_HOME=/usr/lib/oracle/10.2.0.4/client

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

注意路径要与实际相符。

3. 测试连通性

# sqlplus test/test123@192.1.1.225:1521/orcl

如果连不通,检查客户端与Oracle服务器网络是否连通,另外检查服务器上tnsnames.ora文件中使用的主机名还是IP地址,建议用IP,确保客户端能正常访问。连接成功后再往下配置ODBC。

4. 配置ODBC

在odbcinst.ini中添加Oracle驱动。

[Oracle]

Description = ODBC for Oracle

Driver = /usr/lib/oracle/10.2.0.4/client/lib/libsqora.so.10.1

Setup =

在odbc.ini中配置数据源。

[oracle225]

driver = Oracle

server = 192.1.1.225

port = 1521

servername = orcl255

其中servername是tnsnames.ora中配置的SID,而tnsnames.ora的位置由TNS_NAMES环境变量指定。

# export TNS_NAMES=/etc

# cat /etc/tnsnames.ora

orcl255 =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP) (HOST = 192.1.1.225) (PORT = 1521))

(CONNECT_DATA = (SERVICE_NAME = ORCL))

)

配置好后可用isql命令测试连接。

# isql oracle225 system keyouhac

连接达梦数据库

达梦数据库是款国产数据库,应用还有待推广。

在Linux环境下通过-i选项进行交互式安装,这里选择自定义安装方式,安装组件选择客户端和ODBC相关驱动,安装完成后即可用客户端工具连接数据库测试。

$ sudo ./DMInstall.bin -i

$ /opt/dmdbms/tool/disql

SQL> conn SYSDBA/SYSDBA@192.1.1.190

SQL> select * from dmhr.job;

也可以通过unixODBC提供的isql工具连接,但需要配置驱动和数据源。

$ cat /etc/odbcinst.ini

[DM7]

Description = ODBC DRIVER FOR DM7

Driver = /opt/dmdbms/bin/libodbc.so

$ cat /etc/odbc.ini

[dm190]

Description = dmdb

Driver = DM7

SERVER = 192.1.1.190

UID = SYSDBA

PWD = SYSDBA

TCP_PORT = 5236

$ isql dm190

$ isql dm190 SYSDBA SYSDBA

ODBC编程

以下是通过ODBC连接mysql数据库并执行sql语句的示例,其他类型数据库类似。

#include

#include

#include

#include

HENV henv;

HDBC hdbc;

HSTMT hsmt;

SQLRETURN rc;

int Success(SQLRETURN ret) {

return ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO;

}

int Failed(SQLRETURN ret) {

return !Success(ret);

}

void ODBCError(SQLSMALLINT handleType, SQLHANDLE handle) {

BYTE buf[256], sqlstate[256];

SQLGetDiagRec(handleType, handle, 1, sqlstate, NULL, buf, sizeof(buf), NULL);

printf("[%s]%s", sqlstate, buf);

}

int main() {

if (Failed(SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv))) {

ODBCError(SQL_HANDLE_ENV, henv);

return -1;

}

SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);

if (Failed(SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc))) {

ODBCError(SQL_HANDLE_DBC, hdbc);

return -1;

}

if (Failed(SQLConnect(hdbc, (SQLCHAR*)"mysql", SQL_NTS, (SQLCHAR*)"root", SQL_NTS,

(SQLCHAR*)"123456", SQL_NTS))) {

ODBCError(SQL_HANDLE_DBC, hdbc);

return -1;

}

{

char user[128], host[128], pass[128];

long cbuser = 0, cbhost = 0, cbpass = 0;

if (Failed(SQLAllocStmt(hdbc, &hsmt))) {

ODBCError(SQL_HANDLE_STMT, hsmt);

return -1;

}

SQLExecDirect(hsmt, (SQLCHAR*)"select user, host, password from mysql.user", SQL_NTS);

SQLBindCol(hsmt, 1, SQL_C_CHAR, user, sizeof(user), &cbuser);

SQLBindCol(hsmt, 2, SQL_C_CHAR, host, sizeof(host), &cbhost);

SQLBindCol(hsmt, 3, SQL_C_CHAR, pass, sizeof(pass), &cbpass);

while (Success(SQLFetchScroll(hsmt, SQL_FETCH_NEXT, 0)))

printf("user=[%s], host=[%s], pass=[%s]\n", user, host, pass);

}

SQLFreeHandle(SQL_HANDLE_STMT, hsmt);

SQLDisconnect(hdbc);

SQLFreeHandle(SQL_HANDLE_DBC, hdbc);

SQLFreeHandle(SQL_HANDLE_ENV, henv);

return 0;

}

「❤️ 感谢大家」点赞支持下吧,让更多的人也能看到这篇内容(收藏不点赞,都是耍流氓 -_-)

欢迎在留言区与我分享你的想法,也欢迎你在留言区记录你的思考过程

odbc mysql 配置文件_ODBC连接主流数据库的配置方法相关推荐

  1. php连接mssql数据库的几种方法,php 连接mssql数据库与配置方法_PHP教程

    php 连接mssql数据库与配置方法 下面要来告诉各位朋友php连接mssql数据库并且与php mssql配置方法哦,这样如果你是初学者这文章可以让你从配置mssql 到让php连接mssql数据 ...

  2. sql数据库配置php,php 连接mssql数据库与配置方法

    php 连接mssql数据库与配置方法 下面要来告诉各位朋友php连接mssql数据库并且与php mssql配置方法哦,这样如果你是初学者这文章可以让你从配置mssql 到让php连接mssql数据 ...

  3. java web access_Java Web项目中连接Access数据库的配置方法

    本文是对前几天的"JDBC连接Access数据库的几种方式"这篇的升级.因为在做一些小项目的时候遇到的问题,因此才决定写这篇博客的.昨天已经将博客公布了.可是后来经过一些验证有点问 ...

  4. php5.3无法加载mysql数据库模块_PHP_php5.3不能连接mssql数据库的解决方法,本文实例讲述了php5.3不能连接m - phpStudy...

    php5.3不能连接mssql数据库的解决方法 本文实例讲述了php5.3不能连接mssql数据库的解决方法.分享给大家供大家参考.具体分析如下: 自从php5.3之后系统就不支持mssql_conn ...

  5. nhibernate mysql配置_NHibernate 连接多数据库怎么配置?

    NHibernate 连接多数据库怎么配置?是不是连一个数据库,就创建一个NHibernate.cfg.xml 或 配置文件?如果要连接6个数据库,就要创建6个配置文件,太麻烦了吧!有没有简单的写法? ...

  6. MySQL命令行连接远程数据库

    mysql命令用户连接远程数据库 mysql命令格式: mysql -h主机地址 -u用户名 -p用户密码 例如:mysql -h10.1.1.143 -uroot -ptest 连接带端口: mys ...

  7. django oracle数据库配置,django连接oracle时setting 配置方法

    下一步是将新创建的应用程序与项目相关联.为此,您需要编辑 myproj 文件夹中的 settings.py 文件,将字符串"myproj.myapp"追加到 INSTALLED_A ...

  8. Mac下mysql配置文件没有my-default.cnf,无法配置my.cnf

    Mysql不提供my-default.cnf文件的版本 官网说:从5.7.18开始不在二进制包中提供my-default.cnf文件. 针对用户 针对mac端,并且没有my-default.cnf的用 ...

  9. mysql数据库64免安装_MYSQL数据库mysql 5.7.18 winx64 免安装 配置方法

    <MysqL数据库MysqL 5.7.18 winx64 免安装 配置方法>要点: 本文介绍了MysqL数据库MysqL 5.7.18 winx64 免安装 配置方法,希望对您有用.如果有 ...

最新文章

  1. 转:ESRI矢量数据格式简介
  2. Python之pandas:pandas的get_dummies函数简介(将分类变量转为哑变量)及其使用方法之详细攻略
  3. pb 窗口数据修改sql_大数据hadoop,数据中台选型你应该看到这些分布式数据库
  4. 花信年华--You're gonna love who you turn out to be
  5. 【Python数据挖掘课程】五.线性回归知识及预测糖尿病实例
  6. (精)tomcat 源码学习
  7. matlab 读写其他格式数据文件(excel)
  8. 配置React项目的运行环境
  9. JavaScript几个难点
  10. java nio 消息_java nio消息半包、粘包解决方案
  11. vs 警告被视为错误
  12. 苦逼IT男必然生女?
  13. VUE2.0 测试环境配置
  14. Java比较器-学习
  15. 基于R实现统计中的检验方法---方差分析
  16. 狗屎一样的React(前言)
  17. 用LED驱动框架注册led设备的示例代码
  18. opencv imwrite()保存图片崩溃
  19. 你还在找音乐网站吗?试试这几个吧
  20. js的间隔调用和延迟调用

热门文章

  1. 如何在 ASP.Net Core 使用 内存缓存
  2. 用重构指导Clean Code(二):依恋情结和switch语句
  3. 跟我一起学.NetCore之MVC过滤器,这篇看完走路可以仰着头走
  4. C#9.0 终于来了,带你一起解读 nint 和 Pattern matching 两大新特性玩法
  5. Kubernetes的安全性怎么解?从4个方面为你列出方案清单
  6. 如何在Windows上使用Git创建一个可执行脚本?
  7. DotNetCore 3.0 助力 WPF本地化
  8. 小白开学Asp.Net Core 《九》
  9. 现身说法:实际业务出发分析百亿数据量下的多表查询优化
  10. 基于OIDC(OpenID Connect)的SSO(纯JS客户端)