TLSv1 和 TLSv1.1 连接协议现已弃用,并且在未来的 Connector/C++ 版本中可能会删除对它们的支持。(有关背景信息,请参阅 IETF 备忘录 弃用 TLSv1.0 和 TLSv1.1。)建议使用更安全的 TLSv1.2 和 TLSv1.3 协议建立连接。TLSv1.3 要求服务器和连接器/C++ 都使用 OpenSSL 1.1.1 或更高版本进行编译。
-
使用旧版 JDBC API 的应用程序现在可以为使用服务器端身份验证插件的帐户建立连接
authentication_kerberos
,前提是正确的 Kerberos 票证可用或可以从 Kerberos 获得。此功能仅在运行 Linux 的客户端主机上可用。在这些情况下,无需提供用户名即可连接到 Kerberos 身份验证的帐户:
用户已分配 Kerberos 主体名称,存在该主体名称的 MySQL Kerberos 帐户,并且用户具有所需的票证。
必须 使用连接选项 将默认身份验证方法设置为
authentication_kerberos_client
客户端身份验证插件 。OPT_DEFAULT_AUTH
如果用户在 Kerberos 缓存中有所需的票据(例如,由kinit或类似命令创建),则无需提供密码即可连接。
如果 Kerberos 缓存中不存在所需的票证并且提供了密码,Connector/C++ 会使用该密码从 Kerberos 获取票证。如果在缓存中找到所需的票证,则忽略任何给定的密码,即使密码不正确,连接也可能成功。
有关 Kerberos 身份验证的更多信息,请参阅 Kerberos 可插入身份验证。
-
使用遗留 JDBC API 的应用程序现在可以在每个查询的基础上定义查询属性元数据。无需使用变通方法,例如查询字符串中包含特殊格式的注释。此功能是使用类的特定于类型的方法实现的
sql::Statement
:int Statement::setQueryAttrInt(attr_name, int_value); int Statement::setQueryAttrString(attr_name, str_value); int Statement::setQueryAttrBoolean(attr_name, bool_value);
每个方法都采用一个字符串值属性名称和一个适当类型的属性值。返回值是属性编号,如果服务器不支持查询属性,则返回 0。
为该类实现了类似的方法,
sql::PreparedStatement
但什么都不做,因为 MySQL 客户端库尚不支持准备语句的查询属性。使用 set-attribute 方法定义的属性适用于发送到服务器执行的下一个 SQL 语句。如果多次定义具有给定名称的属性,则应用最后一个定义。属性在语句执行后被清除,或者可以使用
clearAttributes()
方法显式清除。该
mysql_query_attribute_string()
函数返回给定属性的当前值,但无法检索具有空名称的属性的值。例子:
std::unique_ptr<sql::Statement> stmt(con->createStatement()); // Set three query attributes for a query without parameters ("SELECT 1"), // where the attribute types are int, string, and bool: stmt->setQueryAttrInt("attr1", 200); stmt->setQueryAttrString("attr2", "string value"); stmt->setQueryAttrBoolean("attr3", true); // To retrieve the attributes within a query, use the // mysql_query_attribute_string() function: stmt->execute("SELECT 1, mysql_query_attribute_string('attr1'), mysql_query_attribute_string('attr2'), mysql_query_attribute_string('attr3')"); // Change an attribute value: stmt->setQueryAttrInt("attr1", 100); // Executing the statement here and fetching the result should show the // changed attribute value. // Clear the attributes: stmt->clearAttributes(); // Executing the statement here and fetching the result should show the // the attributes are no longer present.
要在 Connector/C++ 应用程序中使用查询属性功能,必须启用对查询属性的服务器端支持。有关说明以及有关一般查询属性支持的更多信息,请参阅 查询属性。
-DMYSQLCLIENT_STATIC_BINDING=0
使用和-DMYSQLCLIENT_STATIC_LINKING=0
配置选项 时构建失败 。(缺陷号 32882344)对于指定要尝试的服务器列表的连接尝试,连接超时值可能是正确持续时间的两倍。(缺陷号 32781963)
连接器/C++ 为连接失败返回错误 0 而不是非零错误代码。(缺陷号 32695580)
sql::Connection:commit()
如果连接已断开,则不会抛出任何错误。(缺陷号 23235968)