胖蔡说技术
随便扯扯

OperationalError sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2026, ‘SSL connection error: unknown error number’)

使用flask配置mysql连接数据库操作表的时候,访问返回错误信息如下:

复盘

1、python连接代码

// config.py
class Config():
    SQLALCHEMY_DATABASE_URI = 'mysql://root:root@127.0.0.1/xinlu_clound'
    def __init__():
        pass

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from .config import Config

db = SQLAlchemy()
app = Flask(__name__)

app.config.from_object(Config) # 如上配置SQLALCHEMY_DATABASE_URI 为mysql连接地址


if __name__ == '__main__':
    db.init_app(app)
    app.run()

2、本地mysql环境

  • mysql版本:8.0.29
  • 配置信息
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录 ---这里输入你安装的文件路径----basedir=D:\mysql-8.0.29-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\mysql\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

问题解决

排查问题发现:高版本的mysql默认ssl是开启的(我的数据库是mysql8.0),可通过关闭ssl解决问题。

1、修改my.ini配置文件,在[mysqld]下添加skip_ssl,如下:

[mysqld]
skip_ssl # 忽略ssl

2、重启mysql服务

赞(1) 打赏
转载请附上原文出处链接:胖蔡说技术 » OperationalError sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2026, ‘SSL connection error: unknown error number’)
分享到: 更多 (0)

请小编喝杯咖啡~

支付宝扫一扫打赏

微信扫一扫打赏