10bet网址
MySQL 8.0 C API开发指南
本手册下载
PDF (Ltr)- 1.3 mb
PDF (A4)- 1.3 mb


5.4.51 mysql_options ()

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_INFILECMake选项控制本地数据加载的客户端库默认值(请参见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_INFILECMake选项控制本地数据加载的客户端库默认值(请参见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_Timeout10分钟的值。

  • 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_xxx选项,它不用于建立加密连接,而是影响允许哪些加密操作。看到FIPS支持

    允许的选项值是SSL_FIPS_MODE_OFFSSL_FIPS_MODE_ON,SSL_FIPS_MODE_STRICT

    请注意

    如果OpenSSL FIPS对象模块不可用,惟一允许的值为MYSQL_OPT_SSL_FIPS_MODESSL_FIPS_MODE_OFF.在这种情况下,设置MYSQL_OPT_SSL_FIPS_MODESSL_FIPS_MODE_ONSSL_FIPS_MODE_STRICT导致客户机在启动时产生警告,并以非fips模式运行。

  • MYSQL_OPT_SSL_KEY(参数类型:char *

    客户端私钥文件路径名称。

  • MYSQL_OPT_SSL_MODE(参数类型:unsigned int *

    连接到服务器的安全状态:SSL_MODE_DISABLEDSSL_MODE_PREFERREDSSL_MODE_REQUIREDSSL_MODE_VERIFY_CASSL_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_passwordcaching_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_FILEMYSQL_READ_DEFAULT_GROUP

选项文件中指定的组可能包含以下选项。

选项 描述
character-sets-dir =dir_name 字符集安装的目录。
压缩 使用压缩的客户机/服务器协议。
connect-timeout = 连接超时,以秒为单位。在Linux上,这个超时也用于等待服务器的第一个应答。
数据库=db_name 如果Connect命令中没有指定数据库,则连接到此数据库。
调试 调试选项。
default-character-set =charset_name 使用的默认字符集。
disable-local-infile 禁止使用数据加载本地
enable-cleartext-plugin 启用mysql_clear_password明文验证插件。
主机=host_name 默认的主机名。
init命令=支撑 连接到MySQL服务器时执行的语句。如果发生重新连接,则自动重新执行。
interactive-timeout = 与指定CLIENT_INTERACTIVEmysql_real_connect ().看到部分5.4.55”mysql_real_connect ()
local-infile [= {0 | 1}] 如果没有参数或非零参数,则启用数据加载本地;否则禁用。
max_allowed_packet =字节 客户端可以从服务器读取的最大数据包大小。
多查询multi-results 从多语句执行或存储过程中启用多个结果集。
multi-statements 允许客户端在一个字符串中发送多个语句(由字符)。
密码=密码 默认密码。
在Windows上使用命名管道连接到MySQL服务器。
端口=port_num 默认端口号。
管道协议= {TCP套接字| | |内存} 连接到服务器时使用的协议。
return-found-rows 告诉mysql_info ()使用时返回已找到的行,而不是已更新的行更新
shared-memory-base-name =的名字 用于连接到服务器的共享内存名称。
套接字= {file_name|pipe_name 默认的套接字文件。
ssl-ca =file_name 证书颁发机构的文件。
ssl-capath =dir_name 证书颁发机构目录。
ssl-cert =file_name 证书文件。
ssl cipher =cipher_list 容许SSL密码。
ssl密钥=file_name 关键文件。
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));}