配置 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 上帐户
的密码server 。pwd 是一个别名。 |
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-capath |
SSL CA 路径 | - | SSLCAPATH的别名 作为最终的替代品;在 v8.0.29 中添加。 |
SSLCAPATH |
SSL CA 路径 | - |
包含 PEM 格式的可信 SSL CA 证书的目录的路径。
|
ssl-cert |
证书 | - | SSLCERT的别名 作为最终的替代品;在 v8.0.29 中添加。 |
SSLCERT |
证书 | - |
用于建立安全连接的 SSL 证书文件的名称。
|
ssl-cipher |
SSL密码 | - | SSLCIPHER的别名 作为最终的替代品;在 v8.0.29 中添加。 |
SSLCIPHER |
SSL密码 | - |
SSL 加密的允许密码列表。密码列表的格式与
|
ssl-key |
SSL密钥 | - | SSLKEY的别名 作为最终替代品;在 v8.0.29 中添加。 |
SSLKEY |
SSL密钥 | - |
用于建立安全连接的 SSL 密钥文件的名称。
|
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 起已弃用。最好改用 |
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_TIMEOUT MySQL Client Library的选项。添加于 3.51.27。 |
writetimeout |
- | - | 尝试写入服务器的超时秒数。每次尝试都使用此超时值,
net_retry_count 必要时会重试,因此总有效超时值是
net_retry_count 选项值的倍数。此选项仅适用于 TCP/IP 连接,并且仅适用于 MySQL 5.1.12 之前的 Windows。对应
MYSQL_OPT_WRITE_TIMEOUT MySQL Client Library的选项。添加于 3.51.27。 |
interactive |
交互式客户端 | 0 | 如果设置为 1,
则启用mysql-real-connect()CLIENT_INTERACTIVE 的连接选项
。在 5.1.7 中添加。 |
prefetch |
一次从服务器预取 _ 行 | 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 |
启用加载数据操作 | 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)进行身份验证的帐户时
该选项已添加到连接器/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 中删除。最好改用
|
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 中删除。请改用 |
ssl-mode |
SSL模式 | - | SSLMODE的别名 作为最终的替代品;在 v8.0.29 中添加。 |
SSLMODE |
SSL模式 | - |
设置服务器连接的 SSL 模式。该选项可以设置为以下任何值:
如果
在 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 被覆盖。 |
连接器/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 | 将列更改BIGINT 为
INT 列(某些应用程序无法处理
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 |
设置时
因此,省略该标志会禁用兼容性选项并强制执行 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 | 设置后,此选项会为具有空的列禁用字符集 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
|
不适用 |