33

我最近将本地机器操作系统从 Ubuntu 18.04 升级到 20.04,我在 CentOS (AWS) 上运行我的 MySQL 服务器。每当我尝试连接到 MySQL 服务器时,升级后都会引发 SSL 连接错误。

$ mysql -u yamcha -h database.yourproject.com -p --port 3309

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

但是,如果我将--ssl-mode=disabled选项连同它一起传递,我就可以远程连接。

$ mysql -u yamcha -h database.yourproject.com -p --port 3309 --ssl-mode=disabled

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 22158946
Server version: 5.7.26 MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

查询:

  1. 不经过怎么连接--ssl-mode=disabled
  2. 如何--ssl-mode=disabled在我的 Django 应用程序中传递此选项,目前我已将其定义如下所示,但我仍然遇到相同的错误。
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'yamcha',
        'USER': 'yamcha',
        'PASSWORD': 'xxxxxxxxxxxxxxx',
        'HOST': 'database.yourproject.com',
        'PORT': '3309',
        'OPTIONS': {'ssl': False},
    }
4

6 回答 6

62

Ubuntu 20 提高了安全级别。我可以连接的唯一方法是允许 tls 1 。

编辑这个文件:

/usr/lib/ssl/openssl.cnf

并放在文件的开头:

openssl_conf = default_conf

在该文件的末尾也是:

[ default_conf ]

ssl_conf = ssl_sect

[ssl_sect]

system_default = ssl_default_sect

[ssl_default_sect]
MinProtocol = TLSv1
CipherString = DEFAULT:@SECLEVEL=1

它对我帮助很大:https ://askubuntu.com/questions/1233186/ubuntu-20-04-how-to-set-lower-ssl-security-level

于 2020-05-21T12:07:43.937 回答
24

对于任何使用谷歌搜索的人,您都可以在mysqlcmd:中使用此标志 --ssl-mode=DISABLED。IE:

mysql -uuser -p'myPassw0rd!' -hmysql.company.com --ssl-mode=DISABLED
于 2021-01-27T09:37:55.750 回答
6

将此添加到您的 mysql 5.7 服务器配置文件中,然后重新启动您的 mysql 服务

[mysqld]
tls_version=TLSv1.2

现在您应该能够使用 tls 1.2 连接到它,这是 Ubuntu 20.04 中的默认设置


为了完整起见,在 Ubuntu 20.04 中实际上my.cnfmysql.cnf实际上是同一个文件。所以编辑任何一个都可以。

$ readlink -f /etc/mysql/my.cnf
/etc/mysql/mysql.cnf
于 2020-11-23T15:22:16.157 回答
5

升级到v2.X mysqlclient,添加了ssl_mode选项,https://github.com/PyMySQL/mysqlclient-python/blob/main/HISTORY.rst

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'yamcha',
        'USER': 'yamcha',
        'PASSWORD': 'xxxxxxxxxxxxxxx',
        'HOST': 'database.yourproject.com',
        'PORT': '3309',
        'OPTIONS': {'ssl_mode': 'DISABLED'},
    }
}
于 2020-11-27T03:25:48.533 回答
3

如果您使用的是 MYSQL Workbench:

只需通过编辑连接来禁用SSL。

  1. 在连接面板中编辑连接

  2. 在屏幕截图中给出的参数后的选项中选择 SSL On connection

在此处输入图像描述

  1. 选择使用 SSL:否

在此处输入图像描述

  1. 最后它看起来像这样。

在此处输入图像描述

在 Mysql 工作台以外的客户端上,您也可以尝试禁用 SSL

于 2021-06-29T18:41:56.933 回答
0

如果您仍然想要升级的安全功能,那么您可以考虑将您的 mysql 服务器升级到 5.7。

于 2022-01-21T07:51:37.517 回答