Beginning with version 4.0.0, MySQL has support for secure
(encrypted) connections between MySQL clients and the server using
the Secure Sockets Layer (SSL) protocol. This section discusses
how to use SSL connections. For information on how to require
users to use SSL connections, see the discussion of the
REQUIRE clause of the
GRANT statement in
Section 18.104.22.168, “GRANT Syntax”.
The standard configuration of MySQL is intended to be as fast as possible, so encrypted connections are not used by default. Doing so would make the client/server protocol much slower. Encrypting data is a CPU-intensive operation that requires the computer to do additional work and can delay other MySQL tasks. For applications that require the security provided by encrypted connections, the extra computation is warranted.
MySQL enables encryption on a per-connection basis. You can choose a normal unencrypted connection or a secure encrypted SSL connection according the requirements of individual applications.
Secure connections are based on the OpenSSL API and are available through the MySQL C API. Replication uses the C API, so secure connections can be used between master and slave servers.
Another way to connect securely is from within an SSH connection to the MySQL server host. For an example, see Section 5.6.7, “Connecting to MySQL Remotely from Windows with SSH”.