Назад | Перейти на главную страницу

Не удается подключить MySQL (ошибка 2026) после обновления до Ubuntu 20.04

Я не могу подключиться к MySQL 5.7.27, запущенному на сервере CentOS 7, после обновления моей рабочей станции до Ubuntu 20.04 LTS. Я подключаюсь с помощью команды mysql -h <server_ip> -u <user_name> -p и после ввода пароля я получаю ошибку 2026:

ERROR 2026 (HY000): SSL connection error: error:1425F102:SSL
routines:ssl_choose_client_version:unsupported protocol

Я также пытался получить данные из базы данных с помощью mysqldump, и в результате возникла аналогичная ошибка. Я подумал, что, возможно, после обновления рабочей станции клиент mysql не поддерживает старые протоколы, поэтому я вошел на сервер с помощью ssh, получил доступ к mysql из оболочки сервера и посмотрел, какие протоколы поддерживаются

mysql> SHOW GLOBAL VARIABLES LIKE 'tls_version';
+---------------+---------------+
| Variable_name | Value         |
+---------------+---------------+
| tls_version   | TLSv1,TLSv1.1 |
+---------------+---------------+
1 row in set (0,00 sec)

С этой информацией я снова попытался подключиться с рабочей станции, на этот раз с указанной версией TLS.

mysql -h <server_ip> --tls-version=TLSv1.1 -u <user_name> -p
mysql -h <server_ip> --tls-version=TLSv1 -u <user_name> -p

И обе команды закончились с

ERROR 2026 (HY000): SSL connection error: error:141E70BF:SSL routines:tls_construct_client_hello:no protocols available

Единственное обходное решение, которое я нашел, - это отключить SSL с помощью mysql -h <server_ip> --ssl-mode=DISABLED -u <user_name> -p

Я что-то упускаю или это ошибка? Спасибо за ваши ответы.

В качестве временного решения вы можете отключить ssl из командной строки

$ mysql -h <myserver> -u <myuser> -p --ssl-mode=DISABLED
password:

или создав файл my.cnf

$ cat /etc/my.cnf  
[client] 
ssl-mode=DISABLED

Приносим извинения за то, что оставили комментарий в качестве ответа (недостаточно репутации), но:

  • начиная с Ubuntu 20.04, похоже, что TLS 1.0 и 1.1 были отключены во всей системе.
  • Я не знаю, как его снова включить (вот как я наткнулся на этот вопрос)

У меня нет никаких доказательств этого кроме openssl s_client -tls1 -connect <some TLSv1-enabled host>:443 не работает, и тоже не может nginx поддержка TLS 1.0 и 1.1 в качестве сервера (даже при правильной настройке): /.

Версии TLS до 1.2 обычно считаются достаточно опасными, чтобы их избегать, вероятно, поэтому это и было сделано.

Боюсь, это дает только половину ответа; Я надеюсь, что кто-нибудь подскажет, как снова включить TLS 1.0 и / или 1.1.

Я нашел решение, предполагающее, что ваш MySQL использует OpenSSL, а не yaSSL.

Обратитесь к ssl_cipher переменная конфигурации MySQL.

Настройте список шифров, который включает псевдоцифер. @SECLEVEL=1.

Например,

ssl_cipher = "DHE-RSA-AES128-GCM-SHA256:AES128-SHA:@SECLEVEL=1"

Если вам нужен более разрешительный, но все же безопасный шифровальный список,

"EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES128-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA128:DHE-RSA-AES128-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA128:ECDHE-RSA-AES128-SHA384:ECDHE-RSA-AES128-SHA128:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA384:AES128-GCM-SHA128:AES128-SHA128:AES128-SHA128:AES128-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:@SECLEVEL=1"

взято из cipherlist.eu может сработать.