Security in MySQL  /  Using Encrypted Connections  /  Building MySQL with Support for Encrypted Connections

5.4 Building MySQL with Support for Encrypted Connections

To use encrypted connections between the MySQL server and client programs, your system must support either OpenSSL or wolfSSL:

  • MySQL Enterprise Edition binary distributions are compiled using OpenSSL. It is not possible to use wolfSSL with MySQL Enterprise Edition.

  • MySQL Community Edition binary distributions are compiled using OpenSSL.

  • MySQL Community Edition source distributions can be compiled using either OpenSSL or wolfSSL.

If you compile MySQL from a source distribution, CMake configures the distribution to use OpenSSL by default.

To compile using OpenSSL, use this procedure:

  1. Ensure that OpenSSL 1.0.1 or higher is installed on your system. If the installed OpenSSL version is lower than 1.0.1, CMake produces an error at MySQL configuration time. If it is necessary to obtain OpenSSL, visit

  2. The WITH_SSL CMake option determines which SSL library to use for compiling MySQL (see MySQL Source-Configuration Options). The default is -DWITH_SSL=system, which uses OpenSSL. To make this explicit, specify that option on the CMake command line. For example:

    cmake . -DWITH_SSL=system

    That command configures the distribution to use the installed OpenSSL library. Alternatively, to explicitly specify the path name to the OpenSSL installation, use the following syntax. This can be useful if you have multiple versions of OpenSSL installed, to prevent CMake from choosing the wrong one:

    cmake . -DWITH_SSL=path_name
  3. Compile and install the distribution.

To compile using wolfSSL, download the wolfSSL distribution and apply a small patch. For instructions, see the extra/README-wolfssl.txt file.

To check whether a mysqld server supports encrypted connections, examine the value of the have_ssl system variable:

mysql> SHOW VARIABLES LIKE 'have_ssl';
| Variable_name | Value |
| have_ssl      | YES   |

If the value is YES, the server supports encrypted connections. If the value is DISABLED, the server is capable of supporting encrypted connections but was not started with the appropriate --ssl-xxx options to enable encrypted connections to be used; see Section 5.1, “Configuring MySQL to Use Encrypted Connections”.

To determine whether a server was compiled using OpenSSL or wolfSSL, check the existence of any of the system or status variables that are present only for OpenSSL. See Section 5.3, “SSL Library-Dependent Capabilities”