在配置 DSN 时,您可以为 Connector/ODBC 指定以下表格中的参数。
Windows 上的用户可以使用 ODBC 数据源管理器
设置这些参数;有关操作方法,请参见 第 5.3 节, “在 Windows 上配置 Connector/ODBC DSN”,有关选项、字段和复选框的信息,请参见 表 5.1, “Connector/ODBC DSN 配置选项”,这些选项对应于 ODBC 数据源管理器
的图形用户界面。在 Unix 和 macOS 上,请在 DSN 配置中使用参数名称和值作为关键字/值对。或者,您可以在 InConnectionString
参数中设置这些参数,该参数在 SQLDriverConnect()
调用中。
表 5.1 Connector/ODBC DSN 配置选项
参数 | GUI 选项 | 默认值 | 注释 |
---|---|---|---|
user |
用户 | ODBC | 用于连接到 MySQL 的用户名。 |
uid |
用户 | ODBC | 与 user 同义。在 3.51.16 中添加。 |
server |
TCP/IP 服务器 | localhost |
MySQL 服务器的主机名。如果启用了 MULTI_HOST ,则可以定义多个主机。 |
database |
数据库 | - | 默认数据库。 |
option |
- | 0 | 指定 Connector/ODBC 如何工作的选项。请参见 表 5.3, “Connector/ODBC 选项参数” 和 表 5.4, “针对不同配置的推荐 Connector/ODBC 选项值”。 |
port |
端口 | 3306 | 如果 server 不是 localhost ,则要使用的 TCP/IP 端口。 |
initstmt |
初始语句 | - | 初始语句。连接到 MySQL 时要执行的语句。在 3.51 版本中,该参数称为 stmt 。驱动程序仅支持在初始连接时执行初始语句。 |
password |
密码 | - | server 上 user 帐户的密码。 pwd 是别名。 |
password1 , password2 , password3 |
密码 | - | 用于多因素身份验证 (MFA);password1 是 password 的别名。还有 pwd1、pwd2 和 pwd3 别名。这些是在 8.0.28 中添加的。 |
socket |
- | - | 要连接到的 Unix 套接字文件或 Windows 命名管道;仅当 server 设置为 localhost 时才定义套接字 |
ssl-ca |
SSL 证书 | - | SSLCA 的别名,作为最终的替代;在 v8.0.29 中添加。 |
SSLCA |
SSL 证书 | - |
包含信任 SSL CA 列表的文件的路径。 在 8.0.29 中添加了 |
ssl-capath |
SSL CA 路径 | - | SSLCAPATH 的别名,作为最终的替代;在 v8.0.29 中添加。 |
SSLCAPATH |
SSL CA 路径 | - |
包含以 PEM 格式存储的受信任 SSL CA 证书的目录的路径。 在 8.0.29 中添加了 |
ssl-cert |
SSL 证书 | - | SSLCERT 的别名,作为最终的替代;在 v8.0.29 中添加。 |
SSLCERT |
SSL 证书 | - |
用于建立安全连接的 SSL 证书文件的名称。 在 8.0.29 中添加了 |
ssl-cipher |
SSL 密码 | - | SSLCIPHER 的别名,作为最终的替代;在 v8.0.29 中添加。 |
SSLCIPHER |
SSL 密码 | - |
用于 SSL 加密的允许密码的列表。密码列表与 在 8.0.29 中添加了 |
ssl-key |
SSL 密钥 | - | SSLKEY 的别名,作为最终的替代;在 v8.0.29 中添加。 |
SSLKEY |
SSL 密钥 | - |
用于建立安全连接的 SSL 密钥文件的名称。 在 8.0.29 中添加了 |
ssl-crl |
包含以 PEM 格式存储的证书吊销列表的文件的路径名。 | - | 在 8.0.31 中添加。 |
ssl-crlpath |
包含以 PEM 格式存储的证书吊销列表文件的目录的路径。 | - | 在 8.0.31 中添加。 |
rsakey |
RSA 公钥 | - | 包含用于使用 MySQL 的 SHA256 身份验证插件的 RSA 公钥的 PEM 文件的完整路径名。在 5.3.4 中添加。 |
sslverify |
验证 SSL | 0 | 如果设置为 1,则在与 MySQL 连接一起使用时将验证 SSL 证书。如果未设置,则默认行为是忽略 SSL 证书验证。 注意
该选项已在 Connector/ODBC 5.3.7 中弃用。最好使用 |
authentication-kerberos-mode |
Kerberos 实现 | SSPI | 可接受的值为 "SSPI" (默认值) 或 "GSSAPI"。有关功能详细信息,请参见 Kerberos 可插拔身份验证。SSPI 选项仅受 Windows 支持,而 GSSAPI 则受 Windows 和其他操作系统支持。在 Connector/ODBC 8.0.32 中添加。 |
OPENTELEMETRY |
OpenTelemetry 实现 | PREFERRED | 可接受的值为 PREFERRED (默认值) 或 DISABLED。有关功能详细信息,请参见 第 5.8 节, “OpenTelemetry 追踪支持”。在 Connector/ODBC 8.1.0 中添加。 |
MULTI_HOST |
是否启用多主机功能 | 0 | 启用新连接尝试多个主机,直到建立成功连接为止。主机列表在连接字符串中使用 SERVER 定义。例如,SERVER=address1[:port1],address2[:port2];MULTI_HOST=1 -- 选项是在 8.0.19 中添加的。 |
ENABLE_DNS_SRV |
是否在 DSN 中使用 DNS+SRV | 0 | 如果设置为 1,则在 DSN 中启用 DNS+SRV 使用;主机将在没有端口且使用完整查找名称的情况下传递进行 SRV 查找。示例用法:DRIVER={MySQL ODBC 9.0 Driver};SERVER=_mysql._tcp.foo.abc.com;ENABLE_DNS_SRV=1;USER=user;PWD=passwd; -- 选项在 Connector/ODBC 8.0.19 中添加。 |
字符集 |
字符集 | - | 用于连接的字符集。在 3.51.17 中添加。注意:从 5.1 开始,不允许执行 SET NAMES。从 9.0.0 开始,此选项对于 Unicode 驱动程序已弃用。 |
读取超时 |
- | - | 尝试从服务器读取数据的超时时间(以秒为单位)。每次尝试都使用此超时值,如果需要,会进行重试,因此实际的总超时值为选项值的 3 倍。您可以设置该值,以便在 TCP/IP Close_Wait_Timeout 值为 10 分钟之前检测到连接丢失。此选项仅适用于 TCP/IP 连接,并且仅适用于 MySQL 5.1.12 之前的 Windows。对应于 MySQL 客户端库的 MYSQL_OPT_READ_TIMEOUT 选项。在 3.51.27 中添加。 |
写入超时 |
- | - | 尝试写入服务器的超时时间(以秒为单位)。每次尝试都使用此超时值,如果需要,会进行 net_retry_count 次重试,因此实际的总超时值为选项值的 net_retry_count 倍。此选项仅适用于 TCP/IP 连接,并且仅适用于 MySQL 5.1.12 之前的 Windows。对应于 MySQL 客户端库的 MYSQL_OPT_WRITE_TIMEOUT 选项。在 3.51.27 中添加。 |
交互式 |
交互式客户端 | 0 | 如果设置为 1,则启用 mysql-real-connect() 的 CLIENT_INTERACTIVE 连接选项。在 5.1.7 中添加。 |
OCI_CONFIG_FILE |
Oracle 云基础设施配置文件路径 |
在 Linux 和 macOS 上为 ~/.oci/config ,在 Windows 上为 %HOMEDRIVE%%HOMEPATH%\.oci\config 。 |
由 Oracle Cloud Infrastructure (OCI) 的身份验证_oci_client 插件使用,以支持瞬态密钥对和安全令牌。默认配置文件为 DEFAULT,可以使用 OCI_CONFIG_PROFILE 进行配置。选项在 Connector/ODBC 8.0.27 中添加。 |
OCI_CONFIG_PROFILE |
Oracle 云基础设施配置文件名称 | 默认值 | 默认值为 DEFAULT,可以选择指定 OCI_CONFIG_FILE 中定义的特定配置文件。选项在 Connector/ODBC 8.0.33 中添加。 |
预取 |
一次从服务器预取 _ 行 | 0 |
当设置为非零值 此选项仅适用于只进游标。当选项参数 |
no_ssps |
- | 0 | 在 Connector/ODBC 5.2 及更高版本中,默认情况下使用服务器端预处理语句。当此选项设置为非零值时,预处理语句在客户端侧进行模拟,这与 5.1 和 3.51 中的行为相同。在 5.2.0 中添加。 |
can_handle_exp_pwd |
可以处理过期密码 | 0 | 表示应用程序可以处理过期密码,过期密码由 SQL 状态 08004 (“服务器拒绝连接”) 和本地错误代码 ER_MUST_CHANGE_PASSWORD_LOGIN (1862) 信号。连接处于 “沙箱” 状态,除了发出 SET PASSWORD 语句之外,不能执行任何其他操作。要在此情况下建立连接,您的应用程序必须使用 initstmt 连接选项在开始时设置新密码,或者在连接后立即发出 SET PASSWORD 语句。重置过期密码后,连接上的限制将解除。有关 MySQL 服务器帐户的密码过期详细信息,请参见 ALTER USER 语句。在 5.2.4 中添加。 |
ENABLE_CLEARTEXT_PLUGIN |
启用明文身份验证 | 0 | 设置为 1 以启用明文身份验证。在 5.1.13 和 5.2.5 中添加。 |
ENABLE_LOCAL_INFILE |
启用 LOAD DATA 操作 | 0 | 连接字符串、DSN 和 GUI 选项。将 ENABLE_LOCAL_INFILE=1 设置为启用 LOAD DATA 操作。这会切换 MYSQL_OPT_LOCAL_INFILE mysql_options() 选项。如果同时设置了连接字符串和 DSN 值,则连接字符串会覆盖 DSN 值。在 5.3.12 和 8.0.14 中添加。 |
LOAD_DATA_LOCAL_DIR |
限制 LOAD DATA 操作 | 连接字符串、DSN 和 GUI 选项。将 LOAD_DATA_LOCAL_DIR 设置为特定目录(例如 LOAD_DATA_LOCAL_DIR=/tmp)以限制将文件上传到特定路径。这会设置 MYSQL_OPT_LOAD_DATA_LOCAL_DIR mysql_options() 选项。如果同时设置了连接字符串和 DSN 值,则连接字符串会覆盖 DSN 值。如果 ENABLE_LOCAL_INFILE=1,则此选项无效。在 8.0.22 中添加。 | |
GET_SERVER_PUBLIC_KEY |
获取服务器公钥 | 0 |
当连接到使用 此选项在 Connector/ODBC 版本 8.0.11 和 5.3.11 中添加。它需要使用基于 OpenSSL 的 MySQL 客户端库构建的 Connector/ODBC。如果 Connector/ODBC 使用的 MySQL 客户端库使用 YaSSL 构建,例如 Connector/ODBC 5.3 的 GPL 发行版,则此选项无效且会被忽略。 |
NO_TLS_1_0 |
禁用 TLS 1.0 | 0 | 此选项已在 v8.0.28 中删除。它不允许使用 TLS 1.0 进行连接加密。默认情况下允许所有版本的 TLS,此选项会排除使用版本 1.0。在 5.3.7 中添加。TLS 1.0 支持已在 v8.0.26 中弃用,并在 v8.0.28 中删除。 |
NO_TLS_1_1 |
禁用 TLS 1.1 | 0 | 此选项已在 v8.0.28 中删除。它不允许使用 TLS 1.1 进行连接加密。默认情况下允许所有版本的 TLS,此选项会排除使用版本 1.1。在 5.3.7 中添加。TLS 1.1 支持已在 v8.0.26 中弃用,并在 v8.0.28 中删除。 |
NO_TLS_1_2 |
禁用 TLS 1.2 | 0 | 不允许使用 TLS 1.2 进行连接加密。默认情况下允许所有版本的 TLS,此选项会排除使用版本 1.2。在 5.3.7 中添加。 |
NO_TLS_1_3 |
禁用 TLS 1.3 | 0 | 不允许使用 TLS 1.3 进行连接加密。默认情况下允许所有版本的 TLS,此选项会排除使用版本 1.3。在 8.0.26 中添加。 |
tls-versions |
定义允许的 TLS 协议版本 | TLSv1.2、TLSv1.3(由 libmysqlclient 设置) | 接受 TLSv1.2 和/或 TLSv1.3;而其他值会生成错误。如果 ssl-mode=DISABLED,则此选项无效(禁用),并且会覆盖(禁用)相关的 NO_TLS_X_Y 连接选项(例如 NO_TLS_1_2)。在 8.0.30 中添加。 |
SSL_ENFORCE |
强制使用 SSL | 0 | 强制要求使用 SSL 连接到服务器。请参见 表 5.2,“SSL_ENFORCE 和 DISABLE_SSL_DEFAULT 的组合效果”。在 5.3.6 中添加。 注意
此选项从 Connector/ODBC 5.3.7 开始弃用,并在 8.0.13 中删除。建议使用 |
DISABLE_SSL_DEFAULT |
禁用默认 SSL | 0 | 禁用连接到服务器时默认要求使用 SSL。当设置为 “0” [默认值] 时,Connector/ODBC 会首先尝试使用 SSL 连接,如果无法建立 SSL 连接,则回退到未加密连接。当设置为 “1,” 时,不会尝试使用 SSL 连接,并且使用未加密连接,除非还将 SSL_ENFORCE 设置为 “1.” 请参见 表 5.2,“SSL_ENFORCE 和 DISABLE_SSL_DEFAULT 的组合效果”。在 5.3.6 中添加。注意
此选项从 Connector/ODBC 5.3.7 开始弃用,并在 8.0.13 中删除。建议使用 |
ssl-mode |
SSL 模式 | - | 作为最终替换的 SSLMODE 的别名;在 v8.0.29 中添加。 |
SSLMODE |
SSL 模式 | - |
设置服务器连接的 SSL 模式。该选项可以设置为以下任何值: 在 8.0.29 中添加了一个 如果未显式设置 在 5.3.7 中添加。此选项会覆盖已弃用的 |
SSL 配置参数也可以从 my.ini
或 my.cnf
文件自动加载。请参见 使用选项文件。
表 5.2 SSL_ENFORCE 和 DISABLE_SSL_DEFAULT 的组合效果
DISABLE_SSL_DEFAULT = 0 |
DISABLE_SSL_DEFAULT = 1 |
|
---|---|---|
SSL_ENFORCE = 0 |
(默认值)首先尝试使用 SSL 连接;如果无法连接,则回退到未加密连接。 | 不会尝试使用 SSL 连接;使用未加密连接。 |
SSL_ENFORCE = 1 |
使用 SSL 连接;如果无法建立 SSL 连接,则抛出错误。 | 使用 SSL 连接;如果无法建立 SSL 连接,则抛出错误。 DISABLE_SSL_DEFAULT=1 被覆盖。 |
Connector/ODBC 的行为也可以通过使用在 表 5.3,“Connector/ODBC 选项参数” 中列出的特殊选项参数(在连接字符串中指定或通过 GUI 对话框指定)来修改。所有连接参数也有其自己的数字常数值,可以将这些值相加作为组合值用于 option
参数,以指定这些选项。但是,连接字符串中的数字 option
值只能启用参数,而不能禁用 DSN 上启用的参数,这些参数只能通过在连接字符串中使用其文本名称指定选项参数来覆盖。
虽然可以通过添加选项的常数值轻松构建 option
参数的组合数字值,但分解该值以验证是否启用了特定选项可能很困难。建议在连接字符串中使用选项参数名称,因为这些名称一目了然。
表 5.3 Connector/ODBC 选项参数
参数名称 | GUI 选项 | 常数值 | 说明 |
---|---|---|---|
FOUND_ROWS |
返回匹配的行而不是受影响的行 | 2 | 客户端无法处理 MySQL 返回受影响行的真实值的情况。如果设置了此标志,则 MySQL 会返回 “找到的行”。您必须使用 MySQL 3.21.14 或更高版本才能使其生效。 |
BIG_PACKETS |
允许大结果集 | 8 | 不要为结果和绑定参数设置任何数据包限制。没有此选项,参数绑定将被截断为 255 个字符。 |
NO_PROMPT |
连接时不要提示 | 16 | 即使驱动程序想要提示,也不要提示用户输入。 |
DYNAMIC_CURSOR |
启用动态游标 | 32 | 启用或禁用动态游标支持。 |
NO_SCHEMA |
禁用对 ODBC 架构的支持 | 64 | 忽略在 catalog.schema.table.column 中使用数据库架构名称。另请参阅相关的 NO_CATALOG 选项。此选项在 Connector/ODBC 8.0.13 中已删除,但在此之前没有发挥任何作用,并在 Connector/ODBC 8.0.26 中重新引入。从 Connector/ODBC 8.0.27 开始,此选项默认启用。有关使用详细信息,请参阅 第 8.1.3 节,“配置目录和架构支持” |
NO_DEFAULT_CURSOR |
禁用驱动程序提供的游标支持 | 128 | 强制使用 ODBC 管理器游标(实验性)。 |
NO_LOCALE |
不使用 setlocale() | 256 | 禁用扩展获取的使用(实验性)。 |
PAD_SPACE |
使用空格将 CHAR 填充到完整长度 | 512 | 将 CHAR 列填充到完整列长度。 |
FULL_COLUMN_NAMES |
在 SQLDescribeCol() 中包含表名 | 1024 |
SQLDescribeCol() 返回完全限定的列名。 |
COMPRESSED_PROTO |
使用压缩 | 2048 | 使用压缩的客户端/服务器协议。 |
IGNORE_SPACE |
忽略函数名称后的空格 | 4096 | 告诉服务器忽略函数名称后的空格和 “( ” 之前的空格(PowerBuilder 需要这样做)。这会使所有函数名称成为关键字。 |
NAMED_PIPE |
命名管道 | 8192 | 使用命名管道连接到在 NT 上运行的 mysqld 服务器。 |
NO_BIGINT |
将 BIGINT 列视为 INT 列 | 16384 | 将 BIGINT 列更改为 INT 列(某些应用程序无法处理 BIGINT )。 |
NO_CATALOG |
禁用目录支持 | 32768 | 强制来自目录函数(例如 SQLTables )的结果始终返回 NULL 并且驱动程序报告不支持目录。另请参阅相关的 NO_SCHEMA 选项。有关使用详细信息,请参阅 第 8.1.3 节,“配置目录和架构支持” |
USE_MYCNF |
从 my.cnf 读取选项 |
65536 | 从 my.cnf 中的 [client] 和 [odbc] 组读取参数。 |
SAFE |
启用安全选项 | 131072 | 添加一些额外的安全检查。 |
NO_TRANSACTIONS |
禁用事务支持 | 262144 | 禁用事务。 |
LOG_QUERY |
将查询记录到 %TEMP%\myodbc.sql | 524288 | 将查询记录到 c:\myodbc.sql (/tmp/myodbc.sql ) 文件中。(仅在调试模式下启用。) |
NO_CACHE |
不缓存仅向前游标的结果 | 1048576 | 不要在驱动程序中本地缓存结果,而是从服务器读取 (mysql_use_result() )。这仅适用于仅向前游标。当您不想让驱动程序缓存整个结果集时,此选项在处理大型表时非常重要。 |
FORWARD_CURSOR |
强制使用仅向前游标 | 2097152 | 强制使用 仅向前 游标类型。在应用程序设置默认静态/动态游标类型并且想要驱动程序使用非缓存结果集的情况下,此选项确保仅向前游标的行为。 |
AUTO_RECONNECT |
启用自动重新连接 | 4194304 | 启用自动重新连接功能。不要将此选项与 事务 一起使用,因为在不完整的事务期间进行自动重新连接可能会导致损坏。自动重新连接的连接不会继承与原始连接相同的设置和环境。MySQL Server 在 8.0.34/8.1.0 中弃用了此功能,并在 8.3.0 中将其删除。此连接选项已从 Connector/ODBC 8.3.0 中删除,设置它会返回 SQL_SUCCESS_WITH_INFO,并显示 HY000 错误,表明它不再受支持。 |
AUTO_IS_NULL |
启用 SQL_AUTO_IS_NULL | 8388608 |
当设置了 当未设置 因此,省略该标志会禁用兼容性选项并强制执行 SQL 标准行为。 请参阅 |
ZERO_DATE_TO_MIN |
对于零日期,返回 SQL_NULL_DATA | 16777216 | 将零日期 (XXXX-00-00 ) 转换为 ODBC 支持的最小日期值,即 XXXX-01-01 。这解决了某些语句由于返回的日期和 ODBC 最小日期值不兼容而无法正常工作的问题。在 3.51.17 中添加。 |
MIN_DATE_TO_ZERO |
将最小日期绑定为零日期 | 33554432 | 将 ODBC 最小日期值 (XXXX-01-01 ) 转换为 MySQL 支持的零日期格式 (XXXX-00-00 )。这解决了某些语句由于返回的日期和 ODBC 最小日期值不兼容而无法正常工作的问题。在 3.51.17 中添加。 |
NO_DATE_OVERFLOW |
忽略数据溢出错误 | 0 | 如果时间部分缺失,则继续执行查询,而不是返回错误。服务器将忽略时间部分,结果与时间部分为零时相同。在 5.3.8 中添加。 |
MULTI_STATEMENTS |
允许多个语句 | 67108864 | 启用对批处理语句的支持。从 8.0.24 开始,使用多个语句准备查询会引发错误。不支持使用 SQLPrepare() 函数准备的无参数语句的直接执行。只能通过 SQLExecDirec() ODBC 函数执行多个语句。 |
COLUMN_SIZE_S32 |
将列大小限制为有符号 32 位范围 | 134217728 | 将列大小限制为有符号 32 位值,以防止在不支持更大列大小的应用程序中出现问题。在使用 ADO 应用程序时,此选项会自动启用。在 3.51.22 中添加。 |
NO_BINARY_RESULT |
始终将二进制函数结果作为字符数据处理 | 268435456 | 设置后,此选项将禁用具有空 org_table 的列的字符集 63。在 3.51.26 中添加。 |
DFLT_BIGINT_BIND_STR |
将 BIGINT 参数绑定为字符串 | 536870912 | 导致 BIGINT 参数绑定为字符串。Microsoft Access 在链接表中将 BIGINT 视为字符串。该值被正确读取,但绑定为字符串。如果驱动程序由 Microsoft Access 使用,则此选项会自动使用。在 5.1.3 中添加。 |
NO_I_S |
不使用 INFORMATION_SCHEMA 用于元数据 | 1073741824 | 告诉目录函数不使用 INFORMATION_SCHEMA ,而是使用传统算法。这里的权衡通常是速度与信息质量。在 5.1.7 中添加,在 8.0.26 中弃用,在 8.0.31 中删除(现在被忽略)。 |
CB_FIDO_GLOBAL |
为 authentication_webauthn 连接注册全局回调函数 | 20480 | 用户定义的常量(请参阅 Connector/ODBC WebAuthn 和 FIDO 信息);最后注册的全局回调将在未定义回调的连接中重复使用。仅与使用 MySQL ODBC 驱动程序的连接一起使用;与其他连接一起使用可能会导致未定义的行为。示例用法:SQLSetConnectAttr(hdbc, CB_FIDO_GLOBAL, &my_user_callback, SQL_IS_POINTER); 。在 8.2.0 中添加支持。 |
CB_FIDO_CONNECTION |
为 authentication_webauthn 连接注册每个连接的回调函数 | 20481 | 用户定义的常量(请参阅 Connector/ODBC WebAuthn 和 FIDO 信息);回调注册到单个连接。仅与使用 MySQL ODBC 驱动程序的连接一起使用;与其他连接一起使用可能会导致未定义的行为。在 8.2.0 中添加支持。 |
表 5.4,“不同配置的推荐 Connector/ODBC 选项值” 显示了针对各种配置的一些推荐参数设置及其对应的 option
值
表 5.4 不同配置的推荐 Connector/ODBC 选项值
配置 | 参数设置 | 选项值 |
---|---|---|
Microsoft Access、Visual Basic | FOUND_ROWS=1; | 2 |
Microsoft Access(具有改进的 DELETE 查询) | FOUND_ROWS=1;DYNAMIC_CURSOR=1; | 34 |
Microsoft SQL Server | COLUMN_SIZE_S32=1; | 134217728 |
具有过多行的大型表 | COMPRESSED_PROTO=1; | 2048 |
Sybase PowerBuilder | IGNORE_SPACE=1;FLAG_SAFE=1; | 135168 |
查询日志生成(调试模式) | LOG_QUERY=1; | 524288 |
具有无缓存结果的大型表 | NO_CACHE=1;FORWARD_CURSOR=1; | 3145728 |
运行全表“SELECT * FROM ... ”查询但仅从结果中读取少量 (N ) 行的应用程序 |
PREFETCH=N |
不适用 |