连接到 MariaDB 时 Django DB 连接错误:SSL 连接错误:收到的消息意外或格式错误

问题描述 投票:0回答:1

我正在尝试设置 Django,但每当 Django 尝试使用这些 Django 设置连接到我的远程数据库 (MariaDB) 时:

    DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'USER': 'xx',
        'HOST': 'xx',
        'PASSWORD': 'xx',
        'NAME': 'xx',
        'PORT': '',
        'OPTIONS': {'ssl': True},
    }
}

我收到此错误:

django.db.utils.OperationalError:(2026,'SSL 连接错误:收到的消息意外或格式错误')

我的 MariaDB 的状态是

MariaDB [(none)]> status
--------------
C:\Program Files\MariaDB 11.2\bin\mysql.exe from 11.2.2-MariaDB, client 15.2 for Win64 (AMD64), source revision 929532a9426d085111c24c63de9c23cc54382259

Connection id:          98
Current database:
Current user:           [email protected]
SSL:                    Cipher in use is ECDHE-RSA-AES256-GCM-SHA384
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server:                 MariaDB
Server version:         10.5.22-MariaDB MariaDB Server
Protocol version:       10
Connection:             eccentric.dk via TCP/IP
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8mb4
Conn.  characterset:    utf8mb4
TCP port:               3306
Uptime:                 2 hours 24 min 5 sec

以及数据库的 SSL 设置:

MariaDB [(none)]>  SHOW VARIABLES LIKE '%ssl%';
+---------------------+----------------------------------+
| Variable_name       | Value                            |
+---------------------+----------------------------------+
| have_openssl        | YES                              |
| have_ssl            | YES                              |
| ssl_ca              | /etc/mariadb/chain.pem           |
| ssl_capath          |                                  |
| ssl_cert            | /etc/mariadb/fullchain.pem       |
| ssl_cipher          |                                  |
| ssl_crl             |                                  |
| ssl_crlpath         |                                  |
| ssl_key             | /etc/mariadb/privkey.pem         |
| version_ssl_library | OpenSSL 1.1.1k  FIPS 25 Mar 2021 |
+---------------------+----------------------------------+
10 rows in set (0.036 sec)

和 TLS:

MariaDB [(none)]>  SHOW VARIABLES LIKE '%tls%';
+---------------+-------------------------+
| Variable_name | Value                   |
+---------------+-------------------------+
| tls_version   | TLSv1.1,TLSv1.2,TLSv1.3 |
+---------------+-------------------------+

我已将这些软件包安装在我的 VEnv 中:

Package                Version
---------------------- -------
asgiref                3.7.2
Cython                 3.0.6
Django                 5.0
mariadb                1.1.8
mysql-connector-python 8.2.0
mysqlclient            2.2.0
packaging              23.2
pip                    23.3.1
protobuf               4.21.12
sqlparse               0.4.4
tzdata                 2023.3
wheel                  0.42.0
django ssl openssl mariadb
1个回答
0
投票

如果您使用 SSL True 连接,您还需要提供密钥。

示例代码

'OPTIONS': {'ssl': {'key': '/map/to/ca-cert.pem'}}
© www.soinside.com 2019 - 2024. All rights reserved.