MySQL Connector/ODBC 5.3.11 has been released

Dear MySQL users,

MySQL Connector/ODBC 5.3.11, a new version of the ODBC driver for the
MySQL database management system, has been released.

The available downloads include both a Unicode driver and an ANSI
driver based on the same modern codebase. Please select the driver
type you need based on the type of your application – Unicode or ANSI.
Server-side prepared statements are enabled by default. It is suitable
for use with any MySQL version from 5.5.

This is the fifth release of the MySQL ODBC driver conforming to the
ODBC 3.8 specification. It contains implementations of key 3.8
features, including self-identification as a ODBC 3.8 driver,
streaming of output parameters (supported for binary types only), and
support of the SQL_ATTR_RESET_CONNECTION connection attribute (for the
Unicode driver only).

The release is now available in source and binary form for a number of
platforms from our download pages at

http://dev.mysql.com/downloads/connector/odbc/5.3.html

For information on installing, please see the documentation at

http://dev.mysql.com/doc/connector-odbc/en/connector-odbc-installation.html


Changes in MySQL Connector/ODBC 5.3.11 (2018-07-30, General Availability)

Functionality Added or Changed

     * Based on MySQL Client library 5.7.23 it has the support for the
       new caching_sha2_password authentication method, which allows
       connecting to MySQL Server 8.0.

Bugs Fixed

     * The Unicode version now uses the UTF8MB4 character set as
       a transport character set between the MySQL server and
       the ODBC driver. Because text conversions requested by
       the ODBC user with the CHARSET connection option are done
       inside the ODBC Driver after the data is received from
       the server, it now converts text data as UTF8MB4 to
       USER_CHARSET instead of UTF8 to USER_CHARSET.
       (Bug #28204756)

     * Connections to MySQL Server 8.0 could yield "Source
       character set not supported by client" errors during
       sorting and case-sensitive operations. Now known UTF8MB4
       collations are used for these operations, such as
       utf8mb4_general_ci (known to libmysqlclient 5.7) instead
       of utf8mb4_tolower_ci. (Bug #28116892, Bug #90984)

     * MySQL Server 8.0 connections could fail with unsupported
       character sets and collations as utf8mb4_xxxxxx
       collations reported by MySQL Server 8.0 with numbers
       greater than 250 were unknown to libmysqlclient 5.7.
       Because collations affect sorting but not the data
       conversion, they can be substituted with known collations
       such as utf8mb4_general_ci (45).
       (Bug #28116892, Bug #90984)

     * Connector/ODBC is now built with MySQL client library
       5.7.23, and commercial builds also use an updated OpenSSL
       version (v1.0.2o). Issues fixed in the new OpenSSL
       version are described at
       http://www.openssl.org/news/vulnerabilities.html.
       (Bug #27829777)

     * Reported errors that occurred while executing multiple
       statements with a single query were generic and without
       context. For example, SQLMoreResults might return
       "unhandled error from mysql_next_result()" instead of the
       error reported by MySQL Server.
       (Bug #11757423, Bug #49466)

On Behalf of Oracle/MySQL Release Engineering Team,

Kent Boortz

32-bit ODBC Driver 8.0 for Windows is back!

The previous release of MySQL Connector 8.0.11 caused confusion for many users because its lack of support for Windows 32-bit platform, which is still very popular.

The main reason for it was the change in the MySQL Server 8.0 and MySQL client 8.0 library design, which regarded the Windows 32-bit platform as obsolete. Unfortunately, it had a far reaching adverse impact on the family of MySQL Connectors based on libmysqlclient including MySQL Connector/ODBC.

We listened to the voice of the community and did our best to bring back the 32-bit ODBC Driver for Windows to allow using it in ASP, VB, 32-bit MS Office applications etc.

Now we are happy to announce the return of the fully featured 32-bit version of ODBC Driver 8.0 for Windows with the full support for MySQL Server 8.0. The community version of the driver will soon be available for public at the following address:

https://dev.mysql.com/downloads/connector/odbc/

On behalf of the entire MySQL Team I would like to thank everyone who expressed their concerns in the forums and blogs.

What is new in Connector/ODBC 8.0

General information about MySQL Connector/ODBC 8.0:

MySQL Connector/ODBC 8.0 is a successor of the Connector/ODBC 5.3 line.
The Connector/ODBC driver 8.0 becomes available starting from the version 8.0.11.

Where is 8.0.10? The family of MySQL products is growing and with so many products and different versions it is easy to get confused about functionality and product compatibility. Therefore, we decided to unify the versioning and synchronize the version numbers across all MySQL products. The current GA version of MySQL Server is 8.0.11 and the family of MySQL Connectors including Connector/ODBC has been aligned with the new versioning model and became 8.0.11 too. This will ensure that Connector/ODBC 8.0.11 can work with MySQL Server 8.0.11.

Among bug fixes and internal improvements the Connector/ODBC 8.0.11 received the support for a new authentication methods introduced in MySQL Server 8.0. These new authentication methods require encrypted connection in case password needs to be sent to the server (cache miss). If, for some reason, SSL connection is not an option, passwords still can be sent to the server after encrypting it with server’s public key. A new connection option GET_SERVER_PUBLIC_KEY requests server to send its public key when it is needed. This way clients can connect even if they do not know server’s public key. However, using this option is prone to man-in-the-middle attacks, so it should be used only in situations where you can ensure by other means that your connections are made to trusted servers.

The value of GET_SERVER_PUBLIC_KEY is a boolean, and added in 8.0.11.By default the option is not enabled, but setting it is really easy and can be done in two ways:

  • Through the GUI DSN Setup dialog. Click “Details >>” and tick [x] Get Server Public Key as shown here:

    ODBC GUI Dialog with GET_SERVER_PUBLIC_KEY

    ODBC GUI Dialog with GET_SERVER_PUBLIC_KEY option

  • By specifying the option in the connection string:
    “…GET_SERVER_PUBLIC_KEY=1…”

This capability requires a MySQL 8 server, and is supported only for Connector/ODBC built using OpenSSL. This option is ignored when used with MySQL Server 5.7.

NOTE: There is a way to specify RSA Public key if it is located on the client host. In GUI DSN Setup dialog. Click “Details >>”, select the “SSL” tab and specify the location of RSA Public Key as shown here:

ODBC GUI Dialog with RSAKEY option

ODBC GUI Dialog with RSAKEY option

Alternatively, the RSA Public Key can be given through the connection string as
“…RSAKEY=D:\\ssl\\mykey.pub;…”. The double back-slashes are there because in languages like C or C++ they must be properly escaped.

There are a few things to keep in mind when using MySQL Connector/ODBC 8.0:

  • For maximum security the connection to MySQL Server is established using SSL/TLS by default. All communication between ODBC Driver and MySQL Server would be encrypted using a separate OpenSSL library. For previous versions of MySQL ODBC Driver such as 5.7 the SSL code would be embedded into the driver library file. This is changed in Connector/ODBC 8.0 where OpenSSL shared library is required for the driver to work. The reason for doing it is improving of the security: when the new security update for OpenSSL is released the user can update OpenSSL right away without waiting on the new version of Connector/ODBC driver (which would be necessary if SSL library is embedded). However, in order to work the ODBC driver needs to be able to find and load OpenSSL shared library even if SSL/TLS connection is not used. Most packages released for the version 8.0.11 bundle the latest OpenSSL library files (libeay32.dll/ssleay32.dll for Windows platforms and libcrypto.so/libssl.so for Linux/Unix platforms). Such packages are ready for work out-of-box (assuming that UnixODBC (Linux/Unix) or iODBC (OSX) is installed). Packages for the enterprise platforms such as Red Hat Enterprise Linux or Suse Linux Enterprise Server do not have bundled OpenSSL libraries because in most cases OpenSSL is already installed on these platforms. Also, in enterprise platforms the administrators often update OpenSSL as soon as a new security patch is available.
  • The Windows platform will no longer receive 32-bit builds of MySQL Connector/ODBC 8.0 (Note: there is no 32-bit MySQL Server 8.0 as well).
  • The ODBC Driver 8.0 for Windows needs the Visual C++ 2015 runtime libraries for its work. These libraries are included in Visual C++ 2015 64-bit redistributable package, which can be downloaded from the Microsoft web site.NOTE: VC++ 2017 redistributable package is not a replacement for VC++ 2015. Therefore, even if VC++ 2017 is installed in the system, the 2015 version is still required.

Typical errors that can happen during the installation or setup:

Trying to run an ODBC Driver 8.0 MSI installation package without VC++ 2015 redistributable libraries will result in to following error message dialog:

VC++ 2015 redistributable not found

VC++ 2015 redistributable not found

The solution is to install the 2015 redistributable package and run MSI installer again.

Sometimes the driver is installed without MSI package manually. An attempt to load a Setup module (myodbc8S.dll) from ODBC Administrator without VC++ 2015 redistributable will result in the following error:

Failure to load myodbc8a.dll

Failure to load myodbc8a.dll

Unfortunately, the Windows ODBC Administrator does not give detailed information about the problem why the setup routine could not be loaded. If you see an error dialog like that it is most likely because the VC++ 2015 redistributable package is not installed.