5.2 连接器/ODBC连接参数

配置 DSN 时,您可以在下表中为连接器/ODBC 指定参数:

Windows 用户可以使用ODBC Data Source Administrator来设置这些参数;请参阅 第 5.3 节“在 Windows 上配置连接器/ODBC DSN”以了解如何执行此操作,并参阅 表 5.1“连接器/ODBC DSN 配置选项”以获取有关选项以及它们在图形上对应的字段和复选框的信息的用户界面ODBC Data Source Administrator。在 Unix 和 macOS 上,使用参数名称和值作为 DSN 配置中的关键字/值对。InConnectionString或者,您可以在调用的参数中 设置这些参数SQLDriverConnect()

表 5.1 连接器/ODBC DSN 配置选项

范围 图形用户界面选项 默认值 评论
user 用户 ODBC 用于连接 MySQL 的用户名。
uid 用户 ODBC 与 同义user。添加于 3.51.16。
server TCP/IP 服务器 localhost MySQL 服务器的主机名。
database 数据库 - 默认数据库。
option - 0 指定连接器/ODBC 工作方式的选项。请参阅 表 5.3,“连接器/ODBC 选项参数”表 5.4,“不同配置的推荐连接器/ODBC 选项值”
port 港口 3306 server如果不是 则要使用的 TCP/IP 端口localhost
initstmt 初始声明 - 初始声明。连接到 MySQL 时要执行的语句。在 3.51 版中,该参数称为 stmt. 驱动程序支持仅在初始连接时执行的初始语句。
password 密码 - user上帐户 的密码serverpwd是一个别名。
password1, password2, password3 密码 - 对于多重身份验证 (MFA);password1是 的别名password。还有 pwd1、pwd2 和 pwd3 别名。这些是在 8.0.28 中添加的。
socket - - 要连接的 Unix 套接字文件或 Windows 命名管道;仅server在设置 为时定义套接字localhost
ssl-ca 证书 - SSLCA的别名作为最终替代品;在 v8.0.29 中添加。
SSLCA 证书 -

包含信任 SSL CA 列表的文件的路径。

ssl-ca别名在 8.0.29 中添加, 比SSLCA.

ssl-capath SSL CA 路径 - SSLCAPATH的别名 作为最终的替代品;在 v8.0.29 中添加。
SSLCAPATH SSL CA 路径 -

包含 PEM 格式的可信 SSL CA 证书的目录的路径。

ssl-capath别名在 8.0.29 中添加, 比SSLCAPATH.

ssl-cert 证书 - SSLCERT的别名 作为最终的替代品;在 v8.0.29 中添加。
SSLCERT 证书 -

用于建立安全连接的 SSL 证书文件的名称。

ssl-cert别名在 8.0.29 中添加, 比SSLCERT.

ssl-cipher SSL密码 - SSLCIPHER的别名 作为最终的替代品;在 v8.0.29 中添加。
SSLCIPHER SSL密码 -

SSL 加密的允许密码列表。密码列表的格式与openssl ciphers命令相同。

ssl-cipher别名在 8.0.29 中添加, 比SSLCIPHER.

ssl-key SSL密钥 - SSLKEY的别名 作为最终替代品;在 v8.0.29 中添加。
SSLKEY SSL密钥 -

用于建立安全连接的 SSL 密钥文件的名称。

ssl-key别名在 8.0.29 中添加, 比SSLKEY.

ssl-crl 包含 PEM 格式的证书吊销列表的文件的路径名。 - 添加于 8.0.31
ssl-crlpath 包含 PEM 格式的证书吊销列表文件的目录的路径。 - 添加于 8.0.31
rsakey RSA 公钥 - 包含RSA公钥的PEM文件的全路径名,用于使用MySQL的SHA256认证插件。在 5.3.4 中添加。
sslverify 验证 SSL 0 如果设置为 1,SSL 证书将在用于 MySQL 连接时进行验证。如果未设置,则默认行为是忽略 SSL 证书验证。
笔记

该选项自 Connector/ODBC 5.3.7 起已弃用。最好改用SSLMODE 选项参数。

charset 字符集 - 用于连接的字符集。添加于 3.51.17。注意:从 v5.1 开始不允许执行SET NAMES 。
readtimeout - - 尝试从服务器读取的超时秒数。每次尝试都使用此超时值,必要时还会重试,因此总的有效超时值是选项值的三倍。您可以设置该值,以便在 TCP/IP Close_Wait_Timeout值 10 分钟之前检测到丢失的连接。此选项仅适用于 TCP/IP 连接,并且仅适用于 MySQL 5.1.12 之前的 Windows。对应 MYSQL_OPT_READ_TIMEOUTMySQL Client Library的选项。添加于 3.51.27。
writetimeout - - 尝试写入服务器的超时秒数。每次尝试都使用此超时值, net_retry_count必要时会重试,因此总有效超时值是 net_retry_count选项值的倍数。此选项仅适用于 TCP/IP 连接,并且仅适用于 MySQL 5.1.12 之前的 Windows。对应 MYSQL_OPT_WRITE_TIMEOUTMySQL Client Library的选项。添加于 3.51.27。
interactive 交互式客户端 0 如果设置为 1, 则启用mysql-real-connect()CLIENT_INTERACTIVE的连接选项 。在 5.1.7 中添加。
prefetch 一次从服务器预取 _ 行 0

当设置为非零值 N时,导致连接中的所有查询N一次返回行而不是整个结果集。对于一次检索整个结果集不切实际的非常大的表的查询很有用。您可以滚动浏览结果集, N一次记录。

此选项仅适用于只进游标。设置选项参数时不起作用 MULTI_STATEMENTS。它可以与选项参数结合使用 NO_CACHE。它在 ADO 应用程序中的行为是未定义的:预取可能发生也可能不发生。在 5.1.11 中添加。

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 启用加载数据操作 0 连接字符串、DSN 和 GUI 选项。设置 ENABLE_LOCAL_INFILE=1 以启用加载数据操作。这会切换 MYSQL_OPT_LOCAL_INFILE mysql_options() 选项。如果两者都已设置,连接字符串将覆盖 DSN 值。添加于 5.3.12 和 8.0.14。
LOAD_DATA_LOCAL_DIR 限制加载数据操作 连接字符串、DSN 和 GUI 选项。将 LOAD_DATA_LOCAL_DIR 设置为特定目录,例如 LOAD_DATA_LOCAL_DIR=/tmp,以限制上传文件到特定路径。这设置了 MYSQL_OPT_LOAD_DATA_LOCAL_DIR mysql_options() 选项。如果两者都已设置,连接字符串将覆盖 DSN 值。如果 ENABLE_LOCAL_INFILE=1,则此选项无效。在 8.0.22 中添加。
GET_SERVER_PUBLIC_KEY 获取服务器公钥 0

当连接到通过非安全连接(禁用 TLS)进行身份验证的帐户时 caching_sha2_password,连接器/ODBC 会从服务器请求执行身份验证所需的 RSA 公钥。如果用于连接的身份验证机制不同于 ,则忽略该选项caching_sha2_password。此选项对应于 C API 函数的MYSQL_OPT_GET_SERVER_PUBLIC_KEY 选项 。mysql_options()该值是一个布尔值。

该选项已添加到连接器/ODBC 版本 8.0.11 和 5.3.11 中。它需要使用基于 OpenSSL 的 MySQL 客户端库构建的连接器/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 中添加。在 v8.0.28 中删除之前,在 v8.0.26 中弃用了 TLS 1.0 支持。
NO_TLS_1_1 禁用 TLS 1.1 0 此选项已在 v8.0.28 中删除。它不允许使用 TLS 1.1 进行连接加密。默认情况下允许所有版本的 TLS,并且此选项将 1.1 版排除在外。在 5.3.7 中添加。在 v8.0.28 中删除之前,在 v8.0.26 中弃用了 TLS 1.1 支持。
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 中删除。最好改用 SSLMODE选项参数。

DISABLE_SSL_DEFAULT 禁用默认 SSL 0 禁用使用 SSL 连接到服务器的默认要求。当设置为0 [默认值]时,连接器/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 中删除。请改用SSLMODE 选项参数。

ssl-mode SSL模式 - SSLMODE的别名 作为最终的替代品;在 v8.0.29 中添加。
SSLMODE SSL模式 -

设置服务器连接的 SSL 模式。该选项可以设置为以下任何值: DISABLEDPREFERREDREQUIREDVERIFY_CAVERIFY_IDENTITY。每个选项值的含义 见MySQL 8.0参考手册--ssl-mode中的选项说明。

ssl-mode别名在 8.0.29 中添加, 比SSLMODE.

如果SSLMODE未明确设置,则使用SSLCAor SSLCAPTH选项意味着 SSLMODE=VERIFY_CA.

在 5.3.7 中添加。此选项覆盖已弃用的sslverifySSL_ENFORCE选项。


笔记

SSL 配置参数也可以从my.inimy.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被覆盖。

连接器/ODBC 的行为也可以通过使用 表 5.3 “连接器/ODBC 选项参数”中列出的特殊选项参数来修改,在连接字符串中或通过 GUI 对话框指定。所有的连接参数也有它们自己的数字常量值,这些值可以加起来作为 option参数的组合值来指定这些选项。但是,option连接字符串中的数值只能启用,而不能禁用在 DSN 上启用的参数,只能通过使用连接字符串中的文本名称指定选项参数来覆盖这些参数。

笔记

虽然可以通过添加选项的常量值轻松构造参数的组合数值 option,但分解该值以验证是否启用了特定选项可能很困难。我们建议在连接字符串中使用选项的参数名称,因为它们是不言自明的。

表 5.3 连接器/ODBC 选项参数

参数名称 图形用户界面选项 常数值 描述
FOUND_ROWS 返回匹配的行而不是受影响的行 2个 当 MySQL 返回受影响行的真实值时,客户端无法处理。如果设置了这个标志,MySQL 将返回found rows。你必须有 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 将列更改BIGINTINT列(某些应用程序无法处理 BIGINT)。
NO_CATALOG 禁用目录支持 32768 强制目录函数(例如 )的结果 SQLTables始终返回 NULL,并且驱动程序报告不支持目录。另请参阅相关的 NO_SCHEMA 选项。有关使用的详细信息,请参阅 第 8.1.3 节,“配置目录和模式支持”
USE_MYCNF 从中读取选项my.cnf 65536 [client]从和 [odbc]组中 读取参数my.cnf
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 强制使用Forward-only游标类型。在应用程序设置默认静态/动态游标类型并且希望驱动程序使用非缓存结果集的情况下,此选项可确保只进游标行为。
AUTO_RECONNECT 启用自动重新连接 4194304 启用自动重新连接功能。不要将此选项与 transactions一起使用,因为在未完成的 transaction 期间自动重新连接可能会导致损坏。自动重新连接的连接不会继承与原始连接相同的设置和环境。添加于 3.51.13。
AUTO_IS_NULL 启用 SQL_AUTO_IS_NULL 8388608

设置时AUTO_IS_NULL,驱动程序不会更改默认值 sql_auto_is_null,将其保留为 1,因此您将获得 MySQL 默认值,而不是 SQL 标准行为。

AUTO_IS_NULL未设置时,驱动程序在连接后将默认值更改 为SQL_AUTO_IS_NULL0,因此您获得 SQL 标准,而不是 MySQL 默认行为。

因此,省略该标志会禁用兼容性选项并强制执行 SQL 标准行为。

IS NULL。添加于 3.51.13。

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 设置后,此选项会为具有空的列禁用字符集 63 org_table。添加于 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 为FIDO 连接注册一个全局回调函数 20480 用户定义常量(参见 连接器/ODBC FIDO 信息);最后注册的全局回调在未定义回调的连接中重用。仅与使用 MySQL ODBC 驱动程序的连接一起使用;与其他连接一起使用可能会导致未定义的行为。用法示例:SQLSetConnectAttr(hdbc, CB_FIDO_GLOBAL, &my_user_callback, SQL_IS_POINTER);. 8.0.30 中添加了支持。
CB_FIDO_CONNECTION 为FIDO 连接注册一个连接回调函数 20481 用户定义常量(参见 连接器/ODBC FIDO 信息);回调是为单个连接注册的。仅与使用 MySQL ODBC 驱动程序的连接一起使用;与其他连接一起使用可能会导致未定义的行为。8.0.30 中添加了支持。

表 5.4“针对不同配置的推荐连接器/ODBC 选项值”显示了一些推荐的参数设置及其 option针对各种配置的相应值:

表 5.4 不同配置的推荐连接器/ODBC 选项值

配置 参数设置 期权价值
微软访问、Visual Basic FOUND_ROWS=1; 2个
Microsoft Access(改进了 DELETE 查询) FOUND_ROWS=1;DYNAMIC_CURSOR=1; 34
微软SQL服务器 COLUMN_SIZE_S32=1; 134217728
行太多的大表 压缩原型=1; 2048
赛贝斯PowerBuilder IGNORE_SPACE=1;FLAG_SAFE=1; 135168
查询日志生成(调试模式) 日志查询=1; 524288
没有缓存结果的大表 NO_CACHE=1;FORWARD_CURSOR=1; 3145728
运行全表“SELECT * FROM ...”查询但仅从结果中读取少量 ( N) 行的应用程序 预取=N 不适用