int mysql_options(MYSQL * MYSQL, enum mysql_option选项,const void *arg)
可用于设置额外的连接选项并影响连接的行为。可以多次调用此函数来设置多个选项。要检索选项值,请使用mysql_get_option ()
.
调用mysql_options ()
后mysql_init ()
之前,mysql_connect ()
或mysql_real_connect ()
.
的选项
参数是你想要设置的选项;的参数
参数是该选项的值。如果选项是一个整数,则指定一个指向该整数值的指针作为参数
论点。
如果连接可用,则使用SSL证书和密钥文件等信息选项来建立加密连接,但不强制要求所获得的连接必须加密。要使用加密连接,请使用中描述的技术3.6.1节,“支持加密连接”.
下面的列表描述了可能的选项、它们的效果以及如何使用参数
用于每个选项。用于指示的选项说明参数
是闲置的,它的价值是无关紧要的;通常通过0。
MYSQL_DEFAULT_AUTH
(参数类型:char *
)要使用的身份验证插件的名称。
MYSQL_ENABLE_CLEARTEXT_PLUGIN
(参数类型:bool *
)启用
mysql_clear_password
明文验证插件。看到客户端明文可插拔身份验证.MYSQL_INIT_COMMAND
(参数类型:char *
)连接到MySQL服务器时执行的SQL语句。如果发生重新连接,则自动重新执行。
MYSQL_OPT_BIND
(参数:char *
)连接到服务器的网络接口。当客户端主机有多个网络接口时,可以使用这个选项。参数是主机名或IP地址(用字符串指定)。
MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS
(参数类型:bool *
)指示客户端是否可以处理过期的密码。看到过期密码的服务器处理.
MYSQL_OPT_COMPRESS
(论点:不习惯)尽可能压缩客户端和服务器之间发送的所有信息。看到连接压缩控制.
从MySQL 8.0.18开始,
MYSQL_OPT_COMPRESS
成为一个遗留选项,由于引入MYSQL_OPT_COMPRESSION_ALGORITHMS
选项以获得对连接压缩的更多控制(参见配置连接压缩).的意思MYSQL_OPT_COMPRESS
取决于MYSQL_OPT_COMPRESSION_ALGORITHMS
指定:当
MYSQL_OPT_COMPRESSION_ALGORITHMS
未指定,是否启用MYSQL_OPT_COMPRESS
等价于指定的客户端算法集zlib压缩,
.当
MYSQL_OPT_COMPRESSION_ALGORITHMS
指定,使MYSQL_OPT_COMPRESS
等价于指定zlib
而完整的客户端算法集是zlib
加上指定的算法MYSQL_OPT_COMPRESSION_ALGORITHMS
.例如,使用MYSQL_OPT_COMPRESS
启用并MYSQL_OPT_COMPRESSION_ALGORITHMS
设置为zlib, zstd
,则允许算法集为zlib
+zlib, zstd
;也就是说,zlib, zstd
.与MYSQL_OPT_COMPRESS
启用并MYSQL_OPT_COMPRESSION_ALGORITHMS
设置为zstd,未压缩的
,则允许算法集为zlib
+zstd,未压缩的
;也就是说,zlib zstd,未压缩的
.
从MySQL 8.0.18开始,
MYSQL_OPT_COMPRESS
弃用。在未来的MySQL版本中可能会删除它。看到配置遗留连接压缩.MYSQL_OPT_COMPRESSION_ALGORITHMS
(参数类型:const char *
)连接到服务器所允许的压缩算法。所采用的算法与
protocol_compression_algorithms
系统变量。如果不指定该选项,则默认值为未压缩的
.有关更多信息,请参见连接压缩控制.
这个选项是在MySQL 8.0.18中添加的。为异步操作,该选项直到MySQL 8.0.21才生效。
MYSQL_OPT_CONNECT_ATTR_DELETE
(参数类型:char *
)给定一个键名,该选项将从当前连接属性集中删除一个键-值对,以便在连接时传递给服务器。参数是一个指针,指向一个以空结尾的命名键的字符串。键名与现有键的比较是区分大小写的。
的描述
MYSQL_OPT_CONNECT_ATTR_RESET
选项,以及MYSQL_OPT_CONNECT_ATTR_ADD
的描述中的选项mysql_options4 ()
函数。该功能描述还包括一个使用示例。性能架构通过
session_connect_attrs
而且session_account_connect_attrs
表。看到性能架构连接属性表.MYSQL_OPT_CONNECT_ATTR_RESET
(论点不习惯)此选项重置(清除)要在连接时传递给服务器的当前连接属性集。
的描述
MYSQL_OPT_CONNECT_ATTR_DELETE
选项,以及MYSQL_OPT_CONNECT_ATTR_ADD
的描述中的选项mysql_options4 ()
函数。该功能描述还包括一个使用示例。性能架构通过
session_connect_attrs
而且session_account_connect_attrs
表。看到性能架构连接属性表.MYSQL_OPT_CONNECT_TIMEOUT
(参数类型:unsigned int *
)连接超时,以秒为单位。
MYSQL_OPT_GET_SERVER_PUBLIC_KEY
(参数类型:bool *
)客户端向服务器请求交换RSA密钥对密码所需的公钥。此选项适用于使用
caching_sha2_password
身份验证插件。对于该插件,服务器不会发送公钥,除非请求。对于没有使用该插件进行身份验证的帐户,将忽略此选项。如果不使用基于rsa的密码交换,就像客户机使用安全连接连接到服务器时的情况一样,也会忽略它。如果
MYSQL_SERVER_PUBLIC_KEY
并指定一个有效的公钥文件,则它优先于MYSQL_OPT_GET_SERVER_PUBLIC_KEY
.有关
caching_sha2_password
插件,看到缓存SHA-2可插拔认证.MYSQL_OPT_LOAD_DATA_LOCAL_DIR
(参数类型:char *
)此选项影响客户端
当地的
能力加载数据
操作。它指定文件所在的目录数据加载本地
必须找到语句。的影响MYSQL_OPT_LOAD_DATA_LOCAL_DIR
取决于当地的
启用或禁用数据加载:如果
当地的
在MySQL客户端库中默认或显式启用数据加载MYSQL_OPT_LOCAL_INFILE
,MYSQL_OPT_LOAD_DATA_LOCAL_DIR
选项无效。如果
当地的
MySQL客户端库默认禁用或显式禁用数据加载MYSQL_OPT_LOCAL_INFILE
,MYSQL_OPT_LOAD_DATA_LOCAL_DIR
选项可用于为本地加载的文件指定允许的目录。在这种情况下,当地的
允许加载数据,但仅限于位于指定目录中的文件。的解释MYSQL_OPT_LOAD_DATA_LOCAL_DIR
取值如下:如果该值是空指针(默认值),则它不命名目录,结果是不允许任何文件
当地的
数据加载。如果值是目录路径名,
当地的
允许加载数据,但仅限于指定目录中的文件。目录路径名和要加载文件的路径名的比较是区分大小写的,与底层文件系统的大小写无关。
方法中的文件除外,要显式禁用本地数据加载
/我的/地方/数据
目录中,调用mysql_options ()
是这样的:Unsigned int I = 0;mysql_options (mysql MYSQL_OPT_LOCAL_INFILE、我);MYSQL_OPT_LOAD_DATA_LOCAL_DIR mysql_options (mysql, /我的/地方/数据);
的
MYSQL_OPT_LOAD_DATA_LOCAL_DIR
的生命周期中的任何时间都可以设置mysql
连接处理器。一旦设置,该值将应用于所有后续操作当地的
加载操作,直到值被更改。的
ENABLED_LOCAL_INFILE
CMake选项控制本地数据加载的客户端库默认值(请参见MySQL源配置选项).成功使用
当地的
客户端的加载操作也要求服务器允许本地加载;看到本地加载数据的安全考虑的
MYSQL_OPT_LOAD_DATA_LOCAL_DIR
选项在MySQL 8.0.21中被添加。MYSQL_OPT_LOCAL_INFILE
(参数类型:可选的指向无符号整型
)此选项影响客户端
当地的
能力加载数据
操作。默认情况下,当地的
功能是由默认编译到MySQL客户端库决定的。要显式地控制此功能,请调用mysql_options ()
启用或禁用MYSQL_OPT_LOCAL_INFILE
选择:要启用
当地的
数据加载时,将指针设置为指向无符号整型
具有非零值的,或者省略指针参数。禁用
当地的
数据加载时,将指针设置为指向无符号整型
它的值是0。
如果
当地的
功能被禁用,则MYSQL_OPT_LOAD_DATA_LOCAL_DIR
选项可用于允许对位于指定目录中的文件进行受限制的本地加载。的
ENABLED_LOCAL_INFILE
CMake选项控制本地数据加载的客户端库默认值(请参见MySQL源配置选项).成功使用
当地的
客户端的加载操作也要求服务器允许本地加载;看到本地加载数据的安全考虑MYSQL_OPT_MAX_ALLOWED_PACKET
(参数:无符号长*
)该选项设置用于客户端/服务器通信的客户端缓冲区的最大大小。如果
mysql
参数是不零
,调用将设置该会话的选项值。如果mysql
是零
,该调用为未指定特定会话值的所有后续会话全局设置选项值。因为可以设置会话或全局最大缓冲区大小,这取决于是否
mysql
参数是不零
或零
,mysql_get_option ()
类似地,根据其返回会话值或全局值mysql
论点。MYSQL_OPT_NAMED_PIPE
(论点:不习惯)在Windows上使用命名管道连接MySQL服务器,如果服务器允许命名管道连接。
MYSQL_OPT_NET_BUFFER_LENGTH
(参数:无符号长*
)该选项设置TCP/IP和套接字通信的客户端缓冲区大小。
MYSQL_OPT_OPTIONAL_RESULTSET_METADATA
(参数类型:bool *
)这个标志使结果集元数据可选。它是设置
CLIENT_OPTIONAL_RESULTSET_METADATA
的连接标志。mysql_real_connect ()
函数。管理结果集元数据传输,请参见3.6.6,“可选结果集元数据”.MYSQL_OPT_PROTOCOL
(参数类型:unsigned int *
)用于连接的传输协议。的枚举值之一
mysql_protocol_type
中定义的mysql.h
.MYSQL_OPT_READ_TIMEOUT
(参数类型:unsigned int *
)每次尝试从服务器读取数据的超时(以秒为单位)。如果需要,还会进行重试,因此总的有效超时值是选项值的三倍。您可以设置该值,以便在TCP/IP之前检测到丢失的连接
Close_Wait_Timeout
10分钟的值。MYSQL_OPT_RECONNECT
(参数类型:bool *
)如果发现连接丢失,启用或禁用与服务器的自动重新连接。重新连接默认是关闭的;此选项提供了一种显式设置重新连接行为的方法。看到3.6.7节“自动重连控制”.
MYSQL_OPT_RETRY_COUNT
(参数类型:unsigned int *
)连接到服务器或与服务器通信时中断的与I/ o相关的系统调用的重试次数。如果不指定该选项,则默认值为1(如果初始呼叫中断2次,则重试1次)。
这个选项只能被链接到支持NDB集群的C客户端库的客户端使用。
MYSQL_OPT_SSL_CA
(参数类型:char *
)CA (Certificate Authority)证书文件的路径名称。如果使用此选项,则必须指定服务器使用的相同证书。
MYSQL_OPT_SSL_CAPATH
(参数类型:char *
)受信任的SSL CA证书文件所在目录的路径名称。
MYSQL_OPT_SSL_CERT
(参数类型:char *
)客户端公钥证书文件的路径名称。
MYSQL_OPT_SSL_CIPHER
(参数类型:char *
)SSL加密允许的密码列表。
MYSQL_OPT_SSL_CRL
(参数类型:char *
)包含证书吊销列表的文件的路径名称。
MYSQL_OPT_SSL_CRLPATH
(参数类型:char *
)包含包含证书吊销列表的文件的目录的路径名称。
MYSQL_OPT_SSL_FIPS_MODE
(参数类型:unsigned int *
)控制是否在客户端启用FIPS模式。的
MYSQL_OPT_SSL_FIPS_MODE
选项不同于其他选项MYSQL_OPT_SSL_
选项,它不用于建立加密连接,而是影响允许哪些加密操作。看到FIPS支持.xxx
允许的选项值是
SSL_FIPS_MODE_OFF
,SSL_FIPS_MODE_ON
,SSL_FIPS_MODE_STRICT
.请注意如果OpenSSL FIPS对象模块不可用,惟一允许的值为
MYSQL_OPT_SSL_FIPS_MODE
是SSL_FIPS_MODE_OFF
.在这种情况下,设置MYSQL_OPT_SSL_FIPS_MODE
来SSL_FIPS_MODE_ON
或SSL_FIPS_MODE_STRICT
导致客户机在启动时产生警告,并以非fips模式运行。MYSQL_OPT_SSL_KEY
(参数类型:char *
)客户端私钥文件路径名称。
MYSQL_OPT_SSL_MODE
(参数类型:unsigned int *
)连接到服务器的安全状态:
SSL_MODE_DISABLED
,SSL_MODE_PREFERRED
,SSL_MODE_REQUIRED
,SSL_MODE_VERIFY_CA
,SSL_MODE_VERIFY_IDENTITY
.如果不指定此选项,则默认为SSL_MODE_PREFERRED
.的允许值mysql_ssl_mode
枚举中定义mysql.h
.有关安全状态的更多信息,请参见——ssl-mode
在加密连接的命令选项.MYSQL_OPT_TLS_CIPHERSUITES
(参数类型:char *
)客户端允许使用TLSv1.3加密连接的加密套件。该值是一个或多个冒号分隔的密码套件名称的列表。可为此选项命名的密码套件取决于用于编译MySQL的SSL库。有关详细信息,请参见加密连接TLS协议和密码.
这个选项是在MySQL 8.0.16中添加的。
MYSQL_OPT_TLS_VERSION
(参数类型:char *
)客户端允许加密连接的协议。一个或多个以逗号分隔的协议版本列表。可以为该选项命名的协议依赖于用于编译MySQL的SSL库。有关详细信息,请参见加密连接TLS协议和密码.
MYSQL_OPT_USE_RESULT
(论点:不习惯)此选项未使用。
MYSQL_OPT_WRITE_TIMEOUT
(参数类型:unsigned int *
)每次尝试写入服务器的超时(以秒为单位)。如果需要,可以进行重试,因此总的有效超时值是选项值的两倍。
MYSQL_OPT_ZSTD_COMPRESSION_LEVEL
(参数类型:unsigned int *
)控件连接到服务器时使用的压缩级别
zstd
压缩算法。允许的级别从1到22,较大的值表示压缩级别的增加。如果不指定此选项,则默认zstd
压缩级别为3。压缩级别设置对不使用的连接没有影响zstd
压缩。有关更多信息,请参见连接压缩控制.
这个选项是在MySQL 8.0.18中添加的。为异步操作,该选项直到MySQL 8.0.21才生效。
MYSQL_PLUGIN_DIR
(参数类型:char *
)用于查找客户端插件的目录。
MYSQL_READ_DEFAULT_FILE
(参数类型:char *
)从指定的选项文件读取选项,而不是从
my.cnf
.MYSQL_READ_DEFAULT_GROUP
(参数类型:char *
)从指定组中读取选项
my.cnf
或指定的文件MYSQL_READ_DEFAULT_FILE
.MYSQL_REPORT_DATA_TRUNCATION
(参数类型:bool *
)为准备好的语句启用或禁用数据截断错误报告
错误
的成员MYSQL_BIND
结构。(默认值:启用。)MYSQL_SERVER_PUBLIC_KEY
(参数类型:char *
)PEM格式文件的路径名称,文件中包含服务器通过RSA密钥对交换密码所需的公钥的客户端副本。此选项适用于使用
sha256_password
或caching_sha2_password
身份验证插件。对于没有使用这些插件之一进行身份验证的帐户,将忽略此选项。如果不使用基于rsa的密码交换,就像客户机使用安全连接连接到服务器时的情况一样,也会忽略它。如果
MYSQL_SERVER_PUBLIC_KEY
并指定一个有效的公钥文件,则它优先于MYSQL_OPT_GET_SERVER_PUBLIC_KEY
.有关
sha256_password
而且caching_sha2_password
插件,看到sha - 256可插入身份验证,缓存SHA-2可插拔认证.MYSQL_SET_CHARSET_DIR
(参数类型:char *
)包含字符集定义文件的目录的路径名称。
MYSQL_SET_CHARSET_NAME
(参数类型:char *
)要用作默认字符集的字符集的名称。论证可以是
MYSQL_AUTODETECT_CHARSET_NAME
根据操作系统设置自动检测字符集(请参见连接字符集和排序规则).MYSQL_SHARED_MEMORY_BASE_NAME
(参数类型:char *
)在Windows上,如果服务器支持共享内存连接,用于与服务器通信的共享内存对象的名称。方法使用的相同值
shared_memory_base_name
系统变量。的mysqld您想要连接的服务器。
的客户端
如果使用,则组总是被读取MYSQL_READ_DEFAULT_FILE
或MYSQL_READ_DEFAULT_GROUP
.
选项文件中指定的组可能包含以下选项。
选项 | 描述 |
---|---|
character-sets-dir = |
字符集安装的目录。 |
压缩 |
使用压缩的客户机/服务器协议。 |
connect-timeout = |
连接超时,以秒为单位。在Linux上,这个超时也用于等待服务器的第一个应答。 |
数据库= |
如果Connect命令中没有指定数据库,则连接到此数据库。 |
调试 |
调试选项。 |
default-character-set = |
使用的默认字符集。 |
disable-local-infile |
禁止使用数据加载本地 . |
enable-cleartext-plugin |
启用mysql_clear_password 明文验证插件。 |
主机= |
默认的主机名。 |
init命令= |
连接到MySQL服务器时执行的语句。如果发生重新连接,则自动重新执行。 |
interactive-timeout = |
与指定CLIENT_INTERACTIVE 来mysql_real_connect () .看到部分5.4.55”mysql_real_connect (). |
local-infile [= {0 | 1}] |
如果没有参数或非零参数,则启用数据加载本地 ;否则禁用。 |
max_allowed_packet = |
客户端可以从服务器读取的最大数据包大小。 |
多查询 ,multi-results |
从多语句执行或存储过程中启用多个结果集。 |
multi-statements |
允许客户端在一个字符串中发送多个语句(由; 字符)。 |
密码= |
默认密码。 |
管 |
在Windows上使用命名管道连接到MySQL服务器。 |
端口= |
默认端口号。 |
管道协议= {TCP套接字| | |内存} |
连接到服务器时使用的协议。 |
return-found-rows |
告诉mysql_info () 使用时返回已找到的行,而不是已更新的行更新 . |
shared-memory-base-name = |
用于连接到服务器的共享内存名称。 |
套接字= { |
默认的套接字文件。 |
ssl-ca = |
证书颁发机构的文件。 |
ssl-capath = |
证书颁发机构目录。 |
ssl-cert = |
证书文件。 |
ssl cipher = |
容许SSL密码。 |
ssl密钥= |
关键文件。 |
timeout = |
就像connect-timeout . |
用户 |
默认的用户。 |
超时
已经被connect-timeout
,但超时
仍然支持向后兼容性。
有关MySQL程序使用的选项文件的更多信息,请参见使用选项文件.
以下mysql_options ()
调用请求在客户端/服务器协议中使用压缩,导致从(odbc)
在选项文件中分组,并禁用事务自动提交模式:
MYSQL MYSQL;mysql_init (mysql);mysql_options (mysql MYSQL_OPT_COMPRESS 0);MYSQL_READ_DEFAULT_GROUP mysql_options (mysql,“odbc”);MYSQL_INIT_COMMAND mysql_options (mysql,设置自动提交= 0);如果(!mysql_real_connect(&mysql,"host","user","passwd","数据库",0,NULL,0)) {fprintf(stderr, "连接数据库失败:错误:%s\n", mysql_error(&mysql));}