Mysql连接器python错误违反协议(_ssl.c:2483)



我正在运行一个应用程序运行React, python和MySQL与docker组成,当我运行应用程序一切工作正常,但是当请求数据库(从前端与axios)多次,连接中断,出现以下错误。一切都在本地运行

"2055: Lost connection to MySQL server at 'database:3306', system error: 8 EOF occurred in violation of protocol (_ssl.c:2483)"

下面是我的连接和dockerfile的配置


import mysql.connector

return mysql.connector.connect(
host=os.environ.get("database"),
user="root",
password="root",
database="locatec",
port=3306,
auth_plugin='mysql_native_password'
)
database:
image: mysql
container_name: database
restart: always
ports:
- '3306:3306'
#command: --init-file /init.sql
volumes:
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
- ~/apps/mysql:/var/lib/locatec5
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: test
MYSQL_PASSWORD: test
MYSQL_ROOT_HOST: '%'
TIMEZONE: UTC
networks:
- locatec
server:
build: 
context: ../../../
dockerfile: infra/deploy/backend/dev/Dockerfile
restart: always
ports:
- "5000:5000"
container_name: server
networks:
- locatec
depends_on:
- database

我试过使用

mysql-connector-python==8.0.30

,我还将ssl的参数配置为false

这看起来像我之前遇到的一个错误。在我的例子中,这是由于客户端启动了一个到非安全服务器的安全连接。

错误消息表明客户端已经启动了SSL/TLS连接,并且期望接收比服务器在握手过程中发送的数据更多的数据。

有两种方法可以解决这个问题:
  • 在服务器端启用SSL/TLS,以便客户端可以发起SSL/TLS握手并获得一致的响应。(码头工人一边)
  • 从数据库连接器禁用SSL/TLS。(Python侧)

最新更新