现在可以在 Windows 上使用 MinGW 编译连接器/C++。感谢 Eric Beuque 的贡献。请注意,这可以在 MinGW 上进行构建,但不会使 MinGW 成为 Connector/C++ 的官方支持平台。(错误#31636723,错误#100248)
-
对于使用 X 插件建立的连接,Connector/C++ 现在可以指定用于使用压缩的连接的压缩算法。连接 URI 和
SessionSettings
对象允许明确指定首选算法:-
URI 字符串允许一个
compression-algorithms
选项。该值是一个算法名称,或者是一个或多个指定为数组的逗号分隔算法的列表。例子:mysqlx://user:password@host:port/db?compression-algorithms=lz4 mysqlx://user:password@host:port/db?compression-algorithms=[lz4,zstd_stream]
-
SessionSettings
对象允许一个SessionOption::COMPRESSION_ALGORITHMS
选项。该值是一个或多个以逗号分隔的算法的列表。例子:mysqlx::Session sess(SessionOption::USER, "user_name", SessionOption::PWD, "password", SessionOption::COMPRESSION_ALGORITHMS, "lz4"); mysqlx::Session sess(SessionOption::USER, "user_name", SessionOption::PWD, "password", SessionOption::COMPRESSION_ALGORITHMS, "lz4,zstd_stream");
或者,算法值可以作为容器给出:
std::list<std::string> algorithms = {"lz4","zstd_stream"}; mysqlx::Session sess(SessionOption::USER, "user_name", SessionOption::PWD, "password", SessionOption::COMPRESSION_ALGORITHMS, algorithms);
-
对于 C 的 X DevAPI,有一个新
MYSQLX_OPT_COMPRESSION_ALGORITHMS
选项和相应 的OPT_COMPRESSION_ALGORITHMS
辅助宏。URI 方式遵循 X DevAPI URI 方式:
mysqlx_session_t *sess = mysqlx_get_session_from_url( "mysqlx://user:password@host:port/db?compression-algorithms=[lz4,zstd_stream]", &error);
选项模式遵循用于以下内容的字符串格式
SessionOption
:mysqlx_session_option_set(opt, OPT_HOST("host_name"), OPT_USER("user"), OPT_PWD("password"), OPT_COMPRESSION_ALGORITHMS("lz4,zstd_stream"), PARAM_END));
这些规则适用:
允许的算法名称是
zstd_stream
、lz4_message
和deflate_stream
,以及它们的别名zstd
、lz4
和deflate
。名称不区分大小写。未知名称将被忽略。压缩算法选项允许多种算法,应按优先顺序列出。指定多个算法的选项可以混合使用完整的算法名称和别名。
如果未指定压缩算法选项,则默认为
zstd_stream,lz4_message,deflate_stream
.-
实际使用的算法是在服务器端也允许的压缩算法选项中列出的第一个算法。但是,压缩算法的选项取决于压缩模式:
如果压缩模式为
disabled
,压缩算法选项将被忽略。如果压缩模式是
preferred
但服务器端不允许列出的算法,则连接未压缩。如果压缩模式是
required
但服务器端没有允许列出的算法,则会发生错误。
另请参阅使用 X 插件进行连接压缩。
-
-
对于使用遗留 JDBC API(即,不是 X DevAPI 或 X DevAPI for C)的应用程序,Connector/C++ 二进制分发现在包括提供客户端 LDAP 身份验证插件的库,以及插件。这使 Connector/C++ 应用程序可以使用简单的 LDAP 身份验证或使用身份验证方法的 SASL LDAP 身份验证连接到 MySQL 服务器
SCRAM-SHA-1
。笔记LDAP 身份验证需要使用来自 MySQL Enterprise Edition 发行版的服务器。有关 LDAP 身份验证插件的更多信息,请参阅 LDAP 可插入身份验证。
如果 Connector/C++ 是从压缩的tar 文件或 Zip 存档安装的,应用程序将需要将
OPT_PLUGIN_DIR
连接选项设置为适当的目录,以便可以找到捆绑的插件库。(或者,将所需的插件库复制到客户端库期望的默认目录。)例子:
sql::ConnectOptionsMap connection_properties; // To use simple LDAP authentication ... connection_properties["userName"] = "simple_ldap_user_name"; connection_properties["password"] = "simple_ldap_password"; connection_properties[OPT_ENABLE_CLEARTEXT_PLUGIN]=true; // To use SASL LDAP authentication using SCRAM-SHA-1 ... connection_properties["userName"] = "sasl_ldap_user_name"; connection_properties["password"] = "sasl_ldap_scram_password"; // Needed if Connector/C++ was installed from tar file or Zip archive ... connection_properties[OPT_PLUGIN_DIR] = "${INSTALL_DIR}/lib{64}/plugin"; auto *driver = get_driver_instance(); auto *con = driver->connect(connection_properties); // Execute statements ... con->close();
-
对于使用遗留 JDBC API(即不是 X DevAPI 或 X DevAPI for C)的应用程序, 以前只能通过为客户端可访问的所有文件启用它来在客户端控制语句
LOCAL
的数据加载功能,或者通过LOAD DATA
完全禁用它。新OPT_LOAD_DATA_LOCAL_DIR
选项允许将LOCAL
数据加载限制到位于指定目录中的文件。例如,要在连接时设置值:sql::ConnectOptionsMap opt; opt[OPT_HOSTNAME] = "localhost"; opt[OPT_LOAD_DATA_LOCAL_DIR] = "/tmp"; sql::Connection *conn = driver->connect(opt);
OPT_LOAD_DATA_LOCAL_DIR
也可以在连接时间后设置:sql::ConnectOptionsMap opt; opt[OPT_HOSTNAME] = "localhost"; sql::Connection *conn = driver->connect(opt); //.... some queries / inserts / updates std::string path= "/tmp"; conn->setClientOption(OPT_LOAD_DATA_LOCAL_DIR, path); // LOAD LOCAL DATA DIR ... //Disable LOCAL INFILE by setting to null conn->setClientOption(OPT_LOAD_DATA_LOCAL_DIR, nullptr);
该
OPT_LOAD_DATA_LOCAL_DIR
选项映射到C API 函数的MYSQL_OPT_LOAD_DATA_LOCAL_DIR
选项。mysql_options()
有关详细信息,请参阅 LOAD DATA LOCAL 的安全注意事项。