10bet网址
MySQL 5.7 C API开发指南
本手册下载
PDF (Ltr)- 1.1 mb
PDF (A4)- 1.1 mb
HTML下载(TGZ)- 147.2 kb
HTML下载(邮政编码)- 156.9 kb


5.4.50 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。控件链接应用程序时,其中几个选项才适用libmysqld类链接的应用程序不使用libmysqlclient客户端库。

  • MYSQL_DEFAULT_AUTH(参数类型:char *

    要使用的身份验证插件的名称。

  • MYSQL_ENABLE_CLEARTEXT_PLUGIN(参数类型:my_bool *

    启用mysql_clear_password明文验证插件。看到客户端明文可插入身份验证

  • MYSQL_INIT_COMMAND(参数类型:char *

    连接到MySQL服务器时要执行的SQL语句。如果发生重连,自动重新执行。

  • MYSQL_OPT_BIND(参数:char *

    要从其中连接到服务器的网络接口。当客户端主机有多个网络接口时,使用此方法。参数是主机名或IP地址(以字符串形式指定)。

  • MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS(参数类型:my_bool *

    指示客户端是否可以处理过期的密码。看到过期密码的服务器处理

  • MYSQL_OPT_COMPRESS(论点:不习惯)

    如果可能,压缩客户机和服务器之间发送的所有信息。看到连接压缩控制

  • 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(参数类型:my_bool *

    允许客户端向服务器请求基于RSA密钥对的密码交换所需的公钥。该选项应用于使用caching_sha2_password身份验证插件。对于该插件,服务器不发送公钥,除非请求。对于不使用该插件进行身份验证的帐户,该选项将被忽略。如果不使用基于rsa的密码交换,它也会被忽略,就像客户机使用安全连接连接到服务器时的情况一样。

    如果MYSQL_SERVER_PUBLIC_KEY,并指定有效的公钥文件,它优先于MYSQL_OPT_GET_SERVER_PUBLIC_KEY

    有关caching_sha2_password插件,看到缓存SHA-2可插拔认证

    此选项在MySQL 5.7.23中添加。

  • MYSQL_OPT_GUESS_CONNECTION(论点:不习惯)

    链接到的应用程序libmysqld嵌入式服务器库,此选项使库能够猜测是使用嵌入式服务器还是远程服务器。猜一猜如果设置了主机名,则为本地主机,它使用远程服务器。此行为是默认的。MYSQL_OPT_USE_EMBEDDED_CONNECTION而且MYSQL_OPT_USE_REMOTE_CONNECTION可以用来覆盖它。控件链接的应用程序将忽略此选项libmysqlclient客户端库。

  • MYSQL_OPT_LOCAL_INFILE参数类型:可选的指向无符号整型

    该选项影响客户端当地的能力加载数据操作。默认情况下,当地的能力是由默认编译到MySQL客户端库决定的。要显式控制此功能,请调用mysql_options ()启用或禁用MYSQL_OPT_LOCAL_INFILE选择:

    • 要启用当地的数据加载时,设置指针指向一个无符号整型它具有非零值,或者省略指针参数。

    • 禁用当地的数据加载时,设置指针指向一个无符号整型它的值为零。

    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_PROTOCOL(参数类型:unsigned int *

    用于连接的传输协议。的枚举值之一mysql_protocol_type中定义的mysql.h

  • MYSQL_OPT_READ_TIMEOUT(参数类型:unsigned int *

    每次尝试从服务器读取的超时时间(以秒为单位)。如果有必要,会进行重试,因此总有效超时值是选项值的三倍。通过设置该值,可以在TCP/IP之前检测到丢失的连接Close_Wait_Timeout10分钟。

  • MYSQL_OPT_RECONNECT(参数类型:my_bool *

    如果发现连接已丢失,则启用或禁用与服务器的自动重新连接。默认情况下,重新连接是关闭的;此选项提供了显式设置重连接行为的方法。看到第3.6.6节“自动重连控制”

  • MYSQL_OPT_RETRY_COUNT(参数类型:unsigned int *

    与I/ o相关的系统调用在连接到服务器或与服务器通信时被中断的重试计数。如果不指定此选项,则默认值为1(如果初始呼叫中断2次,则1次重试)。

    此选项仅可用于链接到使用NDB Cluster支持编译的C客户端库的客户端。MySQL NDB Cluster 7.5.1版本可用。

  • MYSQL_OPT_SSL_CA(参数类型:char *

    CA证书文件的路径名称。如果使用此选项,则必须指定服务器使用的相同证书。

  • 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_ENFORCE(参数类型:my_bool *

    是否要求连接使用SSL。如果启用了加密连接,但无法建立加密连接,则连接尝试失败。

    此选项从MySQL 5.7.11起已弃用,在MySQL 8.0中被删除。相反,使用MYSQL_OPT_SSL_MODE的值SSL_MODE_REQUIRED

  • 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 5.7.11中添加。

  • MYSQL_OPT_SSL_VERIFY_SERVER_CERT(参数类型:my_bool *

    启用或禁用根据连接到服务器时使用的主机名对其证书中的服务器的Common Name标识进行验证。如果不匹配,则拒绝连接。对于加密连接,该特性可用于防止中间人攻击。默认禁用身份验证功能。

    此选项不适用于自签名证书,因为自签名证书不包含服务器名作为Common name值。

    此选项从MySQL 5.7.11起已弃用,在MySQL 8.0中被删除。相反,使用MYSQL_OPT_SSL_MODE的值SSL_MODE_VERIFY_IDENTITY

  • MYSQL_OPT_TLS_VERSION(参数类型:char *

    客户端允许哪些协议进行加密连接。一个或多个以逗号分隔的协议版本列表。可以以此选项命名的协议取决于用于编译MySQL的SSL库。有关详细信息,请参见加密连接TLS协议和密码

    此选项在MySQL 5.7.10中添加。

  • MYSQL_OPT_USE_EMBEDDED_CONNECTION(论点:不习惯)

    链接到的应用程序libmysqld嵌入式服务器库,此选项强制使用嵌入式服务器进行连接。控件链接的应用程序将忽略它libmysqlclient客户端库。

  • MYSQL_OPT_USE_REMOTE_CONNECTION(论点:不习惯)

    链接到的应用程序libmysqld嵌入式服务器库,此选项强制使用远程服务器进行连接。控件链接的应用程序将忽略它libmysqlclient客户端库。

  • MYSQL_OPT_USE_RESULT(论点:不习惯)

    此选项未使用。

  • MYSQL_OPT_WRITE_TIMEOUT(参数类型:unsigned int *

    每次尝试写入服务器的超时时间,以秒为单位。如果有必要,会进行重试,因此总有效超时值是选项值的两倍。

  • 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(参数类型:my_bool *

    方法启用或禁用已准备语句的数据截断错误报告错误的成员MYSQL_BIND结构。(默认值:启用。)

  • MYSQL_SECURE_AUTH(参数类型:my_bool *

    是否连接到不支持MySQL 4.1.1及以上版本中使用的密码哈希的服务器。默认情况下该选项是启用的。

  • MYSQL_SERVER_PUBLIC_KEY(参数类型:char *

    PEM格式文件的路径名,其中包含服务器用于基于RSA密钥对的密码交换所需的公钥的客户端副本。该选项应用于使用sha256_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_SET_CLIENT_IP(参数类型:char *

    链接到的应用程序libmysqld嵌入式服务器库(当libmysqld),该选项意味着用户被认为是从指定的IP地址(指定为字符串)连接的,以进行身份验证。控件链接的应用程序将忽略它libmysqlclient客户端库。

  • 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.54”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","database",0,NULL,0)) {fprintf(stderr, "Failed to connect to database: Error: %s\n", mysql_error(&mysql));}