Documentation Home
MySQL 连接器/ODBC 发行说明  / MySQL 连接器/ODBC 版本 8.0 中的更改  /  MySQL Connector/C++ 8.0.29 的变化(2022-04-26,全面上市)

MySQL Connector/C++ 8.0.29 的变化(2022-04-26,全面上市)

可插拔认证

  • Connector/C++ 现在支持使用智能卡、安全密钥和生物识别读取器等设备对 MySQL 服务器进行身份验证。此身份验证方法基于快速身份在线 (FIDO) 标准。为确保使用遗留 JBDC API 的客户端应用程序在用户预期与 FIDO 设备交互时得到通知,Connector/C++ setCallback()MySQL_Driver接受名为Fido_Callback.

    class Fido_Callback
    {
    public:
    
      Fido_Callback(std::function<void(SQLString)>);
    
      /**
      * Override this message to receive Fido Action Requests
      */
      virtual void FidoActionRequested(sql::SQLString msg);
    
    };

    如果需要,驱动程序创建的任何连接都可以使用回调。但是,如果应用程序未明确设置回调,libmysqlclient则默认确定行为,这涉及将消息打印到标准输出。

    笔记

    在 Windows 上,客户端应用程序必须以管理员身份运行。这是插件 fido2.dll 使用的库 的要求。authentication_fido

    客户端应用程序有两个选项可用于从连接器获取回调:

    • 通过将函数或 lambda 传递给 Fido_Callback.

      driver->setCallBack(Fido_Callback([](SQLString msg) {...}));
    • 通过实现虚拟方法 FidoActionRequested

      class MyWindow : public Fido_Callback
      {
        void FidoActionRequested(sql::SQLString msg) override;
      };
      
      MyWindow window;
      driver->setCallBack(window);

    设置新的回调总是会删除以前的回调。要禁用活动回调并恢复默认行为,请nullptr作为函数回调传递。例子:

    driver->setCallBack(Fido_Callback(nullptr));

    有关 FIDO 身份验证的更多信息,请参阅 FIDO 可插入身份验证

安全说明

X DevAPI 注释

  • Connector/C++ X DevAPI 参考文档(位于 https://mysql.net.cn/doc/index-connectors.html)更新了 Collection.modify().unset()操作的使用说明。的参数unset()是一个字符串,将被解释为文档路径表达式(类似于 "$.foo.'bar'"),而不是文字字段名称。如果参数包含特殊字符(空格、' .'、' $' 等),则需要将字段名称用引号引起来。例如:

    Collection.modify(~~).unset(""field name with spaces"")

    (缺陷号 33795881)

添加或更改的功能

  • Connector/C++ 支持现有 TLS/SSL 连接选项的新别名,以在 X DevAPI、X DevAPI for C 和遗留的基于 JDBC 的 API 之间提供更好的一致性。这种协调工作可确保选项命名、功能和行为得到一致实施,同时还保持与现有选项的兼容性。例如,Connector/C++ 现在确保设置 TLS/SSL 连接选项以及 ssl-mode=DISABLED,如果客户端应用程序提供不兼容的选项,或者在连接字符串或属性中重复相同的选项,则不会返回错误。

    适用于 X DevAPI 和 X DevAPI for C 的更改是:

    • tls-version作为别名添加到现有tls-versions连接选项。

    • ssl-capathssl-crlssl-crlpath选项现在实现了与遗留 JDBC API 相同的功能。

    • 如果重复相同的选项,则以最后一个选项值为准。

    遗留 JDBC API 的新别名是:

    • ssl-mode(对于现有 OPT_SSLMODE选项):与服务器连接的首选安全状态。

    • ssl-ca(对于现有 sslCA选项):包含受信任的 SSL 证书颁发机构列表的文件。

    • ssl-capath(对于现有 sslCAPath选项):包含受信任的 SSL 证书颁发机构证书文件的目录。

    • ssl-cert(对于现有 sslCert选项):包含 X.509 证书的文件。

    • ssl-cipher(对于现有 sslCipher选项):用于连接加密的允许密码。

    • ssl-key(对于现有 sslKey选项):包含 X.509 密钥的文件。

    • ssl-crl(对于现有 sslCRL选项):包含证书吊销列表的文件。

    • ssl-crlpath(对于现有 sslCRLPath选项):包含证书吊销列表文件的目录。

    • tls-version(对于现有 OPT_TLS_VERSION选项):用于加密连接的允许 TLS 协议。

    使用遗留 JDBC API 时,设置选项两次的效果由客户端库决定。此外,使用旧版 JDBC API 时,类似 URI 的字符串中不支持 TLS/SSL 选项。

修正错误

  • 聚合函数中的位值类型可能会为使用旧版 JDBC API 的应用程序返回意外值。(缺陷号 33748725)

  • OPT_PLUGIN_DIR除非显式设置连接选项,否则连接 器/C++ 经典驱动程序无法找到身份验证插件。驱动程序现在使用其共享库将插件位置确定为相对路径。(缺陷号 33721056)

  • 在 Windows 上,当使用遗留 JDBC API 的应用程序尝试使用无法找到所需库的插件对用户进行身份验证时,进程会停止而不是发出错误消息。(漏洞#33701997)