核心概念:ODBC 驱动管理器 vs. 驱动 vs. 数据源
在操作之前,必须理解这三个角色:

- ODBC 驱动管理器:一个库(在 Linux 上通常是
unixODBC或iODBC,在 Windows 上是odbc32.dll),负责应用程序与 ODBC 驱动之间的通信,它解析数据源名称,并加载相应的驱动。 - ODBC 驱动:一个特定数据库(如 MySQL, PostgreSQL, SQL Server, Oracle)的库,用于处理与该数据库的连接协议。
MySQL Connector/ODBC。 - 数据源名称:一个别名,应用程序通过这个别名来连接数据库,DSN 包含了连接所需的所有信息,如服务器地址、端口、数据库名、用户名、密码等。
Linux (以 Ubuntu/Debian 为例,使用 unixODBC)
这是最常见的服务器端 ODBC 配置方式。
步骤 1:安装必要的组件
你需要安装 ODBC 驱动管理器、你需要的数据库驱动,以及一个命令行工具(如 isql)来测试连接。
# 1. 安装 ODBC 驱动管理器 sudo apt-get update sudo apt-get install unixodbc unixodbc-dev # 2. 安装你需要的数据库驱动 (以 MySQL 和 PostgreSQL 为例) # MySQL ODBC 驱动 sudo apt-get install libmyodbc # PostgreSQL ODBC 驱动 sudo apt-get install odbc-postgresql # 3. 安装命令行查询工具 (isql 通常包含在 unixodbc 包中) # 如果没有,可以单独安装 sudo apt-get install odbcinst
步骤 2:配置驱动
驱动配置文件是 /etc/odbcinst.ini,这个文件告诉系统有哪些 ODBC 驱动可用。
使用 sudo 编辑该文件:

sudo nano /etc/odbcinst.ini
添加你的驱动信息,添加 MySQL 和 PostgreSQL 驱动:
# /etc/odbcinst.ini [MySQL ODBC 8.0 Unicode Driver] Description = ODBC for MySQL Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc8w.so Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so UsageCount = 1 FileUsage = 1 [PostgreSQL Unicode] Description = ODBC for PostgreSQL Driver = /usr/lib/x86_64-linux-gnu/odbc/psqlodbcw.so Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcpsqlS.so FileUsage = 1
如何找到驱动路径?
驱动文件在 /usr/lib/ 或 /usr/lib/x86_64-linux-gnu/odbc/ 目录下,你可以使用 find 命令搜索:
sudo find / -name "libmyodbc*.so" 2>/dev/null sudo find / -name "psqlodbc*.so" 2>/dev/null
步骤 3:配置数据源
数据源配置文件是 /etc/odbc.ini,这个文件定义了具体的连接信息。
sudo nano /etc/odbc.ini
添加你的数据源,添加一个名为 my_mysql_db 的 MySQL 数据源和一个名为 my_pg_db 的 PostgreSQL 数据源:

# /etc/odbc.ini [my_mysql_db] Description = My Production MySQL Database Driver = MySQL ODBC 8.0 Unicode Driver Server = your_mysql_server_ip Port = 3306 User = your_mysql_user Password = your_mysql_password Database = your_mysql_database [my_pg_db] Description = My Development PostgreSQL DB Driver = PostgreSQL Unicode Servername = your_pg_server_ip Port = 5432 Database = your_pg_database Username = your_pg_user Password = your_pg_password ReadOnly = No
步骤 4:测试连接
使用 isql 命令行工具来测试你的 DSN 是否配置正确。
# 语法: isql -v <DSN_NAME> <USER> <PASSWORD> isql -v my_mysql_db your_mysql_user your_mysql_password
如果配置成功,你会进入一个交互式 SQL 提示符,并看到类似下面的输出:
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
在 SQL> 提示符下输入 SELECT 1; 并按回车,如果返回 1,说明连接成功。
Windows
在 Windows 上,虽然主要使用 ODBC 数据源管理器(图形界面),但也可以通过命令行进行配置。
方法 1:使用 odbcconf.exe (推荐)
odbcconf.exe 是一个功能强大的命令行工具,用于添加、删除和配置驱动和数据源。
添加/注册一个驱动
假设你的 SQL Server 驱动 DLL 文件是 sqlsrv32.dll。
# 语法: odbcconf /S /A {DRIVERADD "Driver Name" "DriverPath=path_to_dll"}
# 注意:需要管理员权限运行 cmd
odbcconf /S /A {DRIVERADD "SQL Server" "DriverPath=C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\SDK\LIB\64\sqlsrv32.dll"}
添加一个用户 DSN (User Data Source)
# 语法: odbcconf /S /A "{CONFIGDSN "Driver Name" "DSN=DSN_Name|Description=...|SERVER=...|..."}"
odbcconf /S /A "{CONFIGDSN "SQL Server" "DSN=MySqlServerDSN|Description=My Test SQL Server DB|SERVER=192.168.1.100|Trusted_Connection=yes|Database=master"}"
添加一个系统 DSN (System Data Source) (需要管理员权限)
# 使用 -S 参数表示系统 DSN
odbcconf /S /A "{CONFIGDSN -S "SQL Server" "DSN=MySystemSqlServerDSN|Description=My System SQL Server DB|SERVER=192.168.1.100|UID=sa|PWD=your_password|Database=master"}"
删除一个 DSN
odbcconf /S /A "{REMOVE DSN "MySqlServerDSN"}"
方法 2:直接修改注册表 (不推荐,风险高)
DSN 信息存储在 Windows 注册表中,你可以使用 reg.exe 命令来修改,但这非常容易出错,不推荐普通用户使用。
用户 DSN 的路径是 HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI。
系统 DSN 的路径是 HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI。
macOS
macOS 通常使用 iODBC 作为驱动管理器,或者通过 Homebrew 安装 unixODBC。
步骤 1:安装 unixODBC 和驱动
# 安装 unixODBC brew install unixodbc # 安装 MySQL ODBC 驱动 brew install mysql-connector-odbc # 安装 PostgreSQL ODBC 驱动 brew install psqlodbc
步骤 2:配置驱动
驱动配置文件是 /usr/local/etc/odbcinst.ini。
nano /usr/local/etc/odbcinst.ini
添加驱动信息(路径可能因 Homebrew 版本而异):
[MySQL ODBC 8.0 Unicode Driver] Description = ODBC for MySQL Driver = /usr/local/lib/libmyodbc8w.so [PostgreSQL Unicode] Description = ODBC for PostgreSQL Driver = /usr/local/lib/libodbcpsqlw.so
步骤 3:配置数据源
数据源配置文件是 /usr/local/etc/odbc.ini。
nano /usr/local/etc/odbc.ini
添加数据源信息,与 Linux 类似。
步骤 4:测试连接
使用 isql 工具(unixODBC 包的一部分)进行测试。
isql -v my_mysql_db your_mysql_user your_mysql_password
总结与关键命令
| 操作系统 | 核心组件 | 驱动配置文件 | 数据源配置文件 | 测试命令 | 主要命令行工具 |
|---|---|---|---|---|---|
| Linux | unixODBC |
/etc/odbcinst.ini |
/etc/odbc.ini |
isql -v <DSN> <USER> <PASS> |
isql, odbcinst |
| Windows | ODBC Driver Manager |
注册表 (DRIVERS 键) |
注册表 (ODBC.INI 键) |
c:\> testconn <DSN> |
odbcconf.exe |
| macOS | unixODBC |
/usr/local/etc/odbcinst.ini |
/usr/local/etc/odbc.ini |
isql -v <DSN> <USER> <PASS> |
isql, odbcinst |
最佳实践:
- 优先使用图形界面:在开发机上,使用 ODBC 数据源管理器(Windows)或
odbcinst(Linux/macOS)进行配置和调试,更直观。 - 命令行用于自动化:当你需要在多台服务器上部署相同的 DSN,或者将配置集成到 CI/CD 流程中时,命令行是最佳选择。
- 权限:在 Linux 和 Windows 上修改系统级配置文件/注册表通常需要管理员/
root权限。 - 验证路径:在编辑
odbcinst.ini时,务必确保Driver和Setup指向的文件路径是正确的,这是最常见的错误来源。
