: MySQL 8.4 Reference Manual :: A.9 MySQL 8.4 FAQ: Security (original) (raw)
Support for the TLSv1 and TLSv1.1 connection protocols is removed as of MySQL 8.0.28. The protocols were deprecated from MySQL 8.0.26. For the consequences of that removal, seeRemoval of Support for the TLSv1 and TLSv1.1 Protocols.
Support for TLS versions 1.0 and 1.1 is removed because those protocol versions are old, released in 1996 and 2006, respectively. The algorithms used are weak and outdated.
Unless you are using very old versions of MySQL Server or connectors, you are unlikely to have connections using TLS 1.0 or 1.1. MySQL connectors and clients select the highest TLS version available by default.
When was support for TLS 1.2 added to MySQL Server? MySQL Community Server added TLS 1.2 support when the community server switched to OpenSSL for MySQL 5.6, 5.7, and 8.0 in 2019. For MySQL Enterprise Edition, OpenSSL added TLS 1.2 support in 2015, in MySQL Server 5.7.10.
How can one view which TLS versions are in active use? For MySQL 5.7 or 8.0, review whether TLS 1.0 or 1.1 is in use by running this query:
SELECT
`session_ssl_status`.`thread_id`, `session_ssl_status`.`ssl_version`,
`session_ssl_status`.`ssl_cipher`, `session_ssl_status`.`ssl_sessions_reused`
FROM `sys`.`session_ssl_status`
WHERE ssl_version NOT IN ('TLSv1.3','TLSv1.2');
If a thread using TLSv1.0 or TLSv1.1 is listed, you can determine where this connection is coming from by running this query:
SELECT thd_id,conn_id, user, db, current_statement, program_name
FROM sys.processlist
WHERE thd_id IN (
SELECT `session_ssl_status`.`thread_id`
FROM `sys`.`session_ssl_status`
WHERE ssl_version NOT IN ('TLSv1.3','TLSv1.2')
);
Alternatively, you can run this query:
SELECT *
FROM sys.session
WHERE thd_id IN (
SELECT `session_ssl_status`.`thread_id`
FROM `sys`.`session_ssl_status`
WHERE ssl_version NOT IN ('TLSv1.3','TLSv1.2')
);
These queries provide details needed to determine which application is not supporting TLS 1.2 or 1.3, and target upgrades for those.
Are there other options for testing for TLS 1.0 or 1.1? Yes, you can disable those versions prior to upgrading your server to a newer version. Explicitly specify which version to use, either in mysql.cnf
(or mysql.ini
) or by usingSET PERSIST, for example:--tls-version=TLSv12.
Do all MySQL Connectors (5.7 and 8.0) support TLS 1.2 and higher? What about C and C++ applications usinglibmysql
? For C and C++ applications using the communitylibmysqlclient
library, use an OpenSSL-based library (that is, do not use YaSSL). Usage of OpenSSL was unified in 2018 (in MySQL 8.0.4 and 5.7.28, respectively). The same applies for Connector/ODBC and Connector/C++. To determine what library dependencies are used, run the following commands to see if OpenSSL is listed. On Linux, use this command:
$> sudo ldd usr/local/mysql/lib/libmysqlclient.a | grep -i openssl
On MacOS, use this command:
$> sudo otool -l /usr/local/mysql/lib/libmysqlclient.a | grep -i openssl
Check the documentation for each connector, but they do support TLS 1.2 and TLS 1.3.