故障分析 | Bad handshake,升级 5.7.28 引起的“血案”

Mysql出现问题:ERROR 1043 (08S01 (ER_HANDSHAKE_ERROR)): Bad handshake解决方案 阅读详情

作者:陈俊聪
任职于中移信息基础平台部数据库组,负责 MySQL 数据库运维工作。
本文来源:原创投稿
*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


引言

作为一名 DBA 碰到过升级出问题需要回退么?碰到过回退还解决不了问题么?我有幸遇到了一次凶险的升级“血案”。问题来自协助客户升级 MySQL,以修复一个安全漏洞。升级版本为 5.7.30,但这个问题源于 5.7.28,并且影响 5.7.28 以上的版本,所以文章主要对比 5.7.27 和 5.7.28 版本。

注意不是 bug,后面会详细说明!

一、现象

MySQL 从 5.7.27 升级到 5.7.30。完成后应用连接测试发现页面异常,mysql error 日志显示:

2020-05-05T22:10:57.976402+08:00 2 [Note] Bad handshake

没有报错,但这条 Note 级别的日志,引起了我的注意,之前从来没有见过。由于时间紧急,决定先回退 MySQL 版本。**回退后,问题未能解决。**Bad handshake,“不好的握手”,网上查了资料,发现和 SSL 可能有关。这时业务也发来应用日志,日志有明显的 SSL 相关报错。然后,我们去检查了 jdbc 连接串,连接串使用了 useSSL=true,改为 useSSL=false 后解决了。

二、分析

我们搭建了一套 java 应用环境,在 5.7.27 版本和 5.7.28 版本分别测试了发生故障时的 jdbc 串:

spring.datasource.url=jdbc:mysql://192.168.199.198:3307/springbootdb?useUnicode=true&useSSL=true&characterEncoding=utf8
5.7.27 版本
  1. 默认关闭了 SSL
mysql> select @@version;
+------------+
| @@version |
+------------+
| 5.7.27-log |
+------------+
1 row in set (0.00 sec)

mysql> show variables like '%ssl%';
+---------------+----------+
| Variable_name | Value |
+---------------+----------+
| have_openssl | DISABLED |
| have_ssl | DISABLED |
| ssl_ca | |
| ssl_capath | |
| ssl_cert | |
| ssl_cipher | |
| ssl_crl | |
| ssl_crlpath | |
| ssl_key | |
+---------------+----------+
9 rows in set (0.00 sec)
  1. 应用页面正常

  1. tomcat 日志正常

  1. 抓包,确实没有用到 SSL,SQL 的明文被我抓出来了
[root@fander ~]# tcpdump -i ens33 port 3307 -l -s 0 -w - | strings
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
^rY
^,]
select
id, province_id, city_name, description
from city
  1. mysql err log 正常

小结

5.7.27 版本下,jdbc 连接串错误地配置了 useSSL=true,并不会有问题,因为数据库不支持 SSL,所以连接实际上并不会使用到 SSL,一切正常。

5.7.28 版本
  1. 升级后,默认居然开了 SSL
mysql> show variables like '%ssl%';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| have_openssl | YES |
| have_ssl | YES |
| ssl_ca | ca.pem |
| ssl_capath | |
| ssl_cert | server-cert.pem |
| ssl_cipher | |
| ssl_crl | |
| ssl_crlpath | |
| ssl_key | server-key.pem |
+---------------+-----------------+
9 rows in set (0.00 sec)
  1. 应用页面异常

  1. tomcat 日志异常

上面日志,能看出是 SSL 相关异常。

并且能发现一个关键的报错,是握手异常,并且有证书相关的报错。

    Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors

后面我证实了,jdbc 连接要求 SSL 和 证书认证要一起使用。
  1. 抓包显示有加密信息,没有抓取到 SQL
[root@fander ~]# tcpdump -i ens33 port 3307 -l -s 0 -w - | strings
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
@8q=*
8q=+P
@8q=+
5.7.30-log
=LQIKF7
mysql_native_password
8q=}P
@8q=}
B 8q=}P
@8q=}
@8q=}
0<1:08
1MySQL_Server_5.7.30_Auto_Generated_CA_Certificate0
200506110938Z
300504110938Z0@1>0<
5MySQL_Server_5.7.30_Auto_Generated_Server_Certificate0
2nh
=zFx
3[x=
o(*c0
Ty5B
0A,IY
-{u6
0<1:08
1MySQL_Server_5.7.30_Auto_Generated_CA_Certificate0
200506110938Z
300504110938Z0<1:08
1MySQL_Server_5.7.30_Auto_Generated_CA_Certificate0
>*[]dG
^!!$
y[(j
kh(nPjd
VU{h
MMojb
U38P
3.^Z
  1. mysql err log 显示 “Bad handshake”
2020-05-06T19:12:13.107321+08:00 2 [Note] Bad handshake

小结

5.7.28 版本下,jdbc 连接串错误地配置了 useSSL=true,会有问题,因为数据库支持 SSL,所以连接实际上应用连接会真的去使用 SSL,但是因为证书问题,导致连接失败,造成了这次升级故障。

不加 useSSL 试试

有一些客户的连接串,是没有使用 useSSL 参数的。

于是,我去掉 useSSL=true,把连接串改为

spring.datasource.url=jdbc:mysql://192.168.199.198:3307/springbootdb?useUnicode=true&characterEncoding=utf8

发现一切正常,但 tomcat 日志有以下的 warnings:Wed May 06 20:54:47 CST 2020 WARN: Establishing SSL connection without server’s identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn’t set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to ‘false’. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.翻译:

  • 不建议在未经服务器身份验证的情况下建立 SSL 连接。

  • 根据 MySQL 5.5.45+、5.6.26+ 和 5.7.6+ 的要求,如果未设置显式选项,则默认情况下必须建立 SSL 连接。

  • 为了符合不使用 SSL 的现有应用程序,verifyServerCertificate 属性设置为“false”。

  • 您需要通过设置 useSSL=false 显式禁用 SSL,

  • 或者设置 useSSL=true 并为服务器证书验证提供 truststore。

从这里的报错,我发现了另外一个连接串参数,verifyServerCertificate,这个参数默认为 true,表示要验证服务器证书。测试得出了以下表格:

三、原因

原因就是连接串错误地设置了 useSSL=true。

在 5.7.27 版本由于实际上不支持 SSL 连接,所以设置 useSSL 居然不会报错,而会降级使用非 SSL 连接;而在 5.7.28 版本,实际上支持了 SSL 连接,所以根据 jdbc 配置 useSSL=true,连接会真的采用 SSL,但应用服务器并没有为服务器证书验证提供 truststore 文件,所以报错了。

问题一:为什么 5.7.28 才支持 SSL?

翻阅官方文档 5.7.28 的 release notes,并没有发现新支持 SSL 的描述,所以应该原本也是支持 SSL 的。实际上的确如此,对于非 openssl 编译的 MySQL(5.7.27 及之前版本),可以采用 Linux 自带的 openssl 和 MySQL 自带的工具 mysql_ssl_rsa_setup,来生成"SSL 密钥和证书文件",以支持 SSL 连接。

注意:Only OpenSSL

以往 MySQL 社区版默认是使用 yassl 编译,企业版默认使用 openssl 编译,手动编译时可以选择 yassl 或 openssl。目前仅支持 OpenSSL,yassl 被移除了,默认编译用的是 openssl,社区版和企业版支持并且只支持 openssl 作为其 SSL 库。至于为什么要使用 openssl 替代 yassl,我们不展开讨论。

在 mysqld.cc 源码里可以看到相关的一些代码改动,

左边 5.7.28,定义了 openssl,则 init-rsa_keys右边 5.7.27,定义了 openssl,并且没有定义 yassl,才 init_rsa_keys。由于 5.7.27 默认是 yassl 编译的,所以实际上不会执行 init_rsa_keys 那段代码。怀疑就是这个改动致使 5.7.28 才支持 SSL。

准确地说,是 5.7.28 才默认支持 SSL,之前版本需要手动使用工具 mysql_ssl_rsa_setup 来生成"SSL 密钥和证书文件",以支持 SSL 连接。

  1. 5.7.28 启动数据库时,会在数据目录自动生成以下文件,而 5.7.27 版本并没有。
ca-key.pem
ca.pem
client-cert.pem
client-key.pem
private_key.pem
public_key.pem
server-cert.pem
server-key.pem

这些文件实际上就是"SSL 密钥和证书文件",用于支持 SSL 连接。

  1. 那么为什么 5.7.28 会自动生成这些文件?
mysql --verbose --help |less
--auto-generate-certs
Auto generate SSL certificates at server startup if --ssl
is set to ON and none of the other SSL system variables
are specified and certificate/key files are not present
in data directory.
(Defaults to on; use --skip-auto-generate-certs to disable.)

在 5.7.28 版本,存在该服务器参数,但 5.7.27 未见此参数。参数写的很清楚,默认是开的,用于自动生成"SSL 密钥和证书文件",如果数据目录没有这堆文件的话。相关的参数,还有这些:

  • auto_generate_certs

  • sha256_password_auto_generate_rsa_keys

  • sha256_password_private_key_path

  • sha256_password_public_key_path

  • Rsa_public_key

官方文档并没有告诉我们这些参数是 5.7.28 新增的,原因是因为这些参数压根就不是新增的!这些参数是一直都有的!如果你的 MySQL 源码编译时用 openssl,替代 yassl,那就有这些参数!

所以 Only OpenSSL 这个新特性,实际上影响比官方文档写的要大,因为他实际上影响了 MySQL 参数!影响了 MyS****QL 默认开启了 SSL 的支持!

问题二:为什么降级回退 MySQL 没有解决问题?

MySQL 5.7.28 启动的时候,会自动生成这些"SSL 密钥和证书文件",所以实际上开启了 SSL 支持。回退 MySQL 5.7.27 时,这些文件和元数据无关,mysql_upgrade 程序是不会帮你删除这些"SSL 密钥和证书文件"的,所以回退后,5.7.27 实际上也开启了 SSL 支持!这导致我那个错误配置 useSSL=true 但没有配置 truststore 文件的应用程序报错。

讨论解决办法

既然,有没有这堆文件,会导致实际上是否开启 SSL,那么解决办法可以是:1. 删除这堆文件,然后重启 MySQL。在回退后的 5.7.27 版本是可以这么操作,但我们总归要升级回去 5.7.28 的,而5.7.28 启动又会自动生成这堆文件,开启 SSL,所以这方法不行。

  1. 删除这堆文件的某个文件,然后重启 MySQL。
    这个方法看起来是可行的,例如删除了 ca.pem 这个文件,文件不全会导致 SSL disabled,并且 mysqld 判断数据目录有部分 pem 文件,于是不会重新生成。但这方法忽略了一个可能,就是如果数据库通过 Xtrabackup 物理热备重做数据库后,因为 Xtrabackup 实际上不会备份任何 pem 文件,所以数据库重做启动后,因 mysqld 判断数据目录没有"SSL 密钥和证书文件",这堆文件会全部重新生成。所以这方法不可行。3. 配置 auto_generate_certs=off让不生成 cert 文件,即可默认 SSL disabled。

建议的解决办法

因为 5.7.27 之前实际上默认是不支持 SSL 连接的,所以为了升级数据库保持原样,只需要配置文件新增以下配置即可。

[mysqld]
skip_ssl

这方法,可以忽略"SSL 密钥和证书文件" ,不启用 ssl 。

总结

文章分享了 jdbc 应该如何配置,并且分享了一起官方文档没有提及的"默认参数变化"引起的升级故障,建议大家升级之前测试一下,对比一下参数,不要过度依赖于官方 release notes 文档。

星座SAR动目标检测(GMTI) 参考代码 星座SAR动目标检测 www.youwenfan.com/contentcsg/52399.html。 阅读详情

相关推荐

随机森林模型及案例(Python)

1 集成模型简介 集成学习模型使用一系列弱学习器(也称为基础模型或基模型)进行学习,并将各个弱学习器的结果进行整合,从而获得比单个学习器更好的学习效果。 集成学习模型的常见算法有Bagging算法和Boosting算法两种。 Bagging算法的典型机器学习模型为随机森林模型,而Boosting算法的典型机器学习模型则为AdaBoost、GBDT、XGBoost和LightGBM模型。 1.1 Bagging算法简介 Bagging算法的原理类似投票,每个弱学习器都有一票,最终根据所有弱学习器的投

qq_42433311的博客 4万+

数据库日志报错 Bad handshake

修改应用连接数据库的配置useSSL=false,或者useSSL=true&verifyServerCertificate=false,或者修改mysql配置文件[mysqld]skip_ssl。应用系统连接数据库的时候,配置了useSSL=true。

yuyanxinyu的博客 1841

ptrade量化策略之沪深300指数增强

本策略的核心是在沪深300股票池中选股,选择的股票都是市值比较大,业绩比较好的白马股,根据市场相对位置以及基本面因子来选择股票

qq_29301281的博客 1190

数据库无法正常登录,提示Bad handshake怎么解决

找到开启的mysql将其关闭,之后启动mysql80就可以通过mysql -uroot -p登录了。数据库正常,重启电脑后再次登录却显示错误无法正常登录。右击我的电脑----点击管理----服务。

weixin_73782048的博客 1644

让数学变得更生动manim库的使用(1)-基本概念

0、概述 数学理论与数学公式的展示总是一件很枯燥的事情,但3b1b的manim动画库在github上开源之后,让这一切变得非常简单。目前这个库已经分成两个版本一个由3b1b自身维护。但作者并没有承诺长期维护该库,所以由专门团队再次基础上研发了相应的社区版,并对该版本进行长期维护。本文的所有案例都基于社区版的官方案例。本文主要介绍该库的基本概念相关的案例,文章主要以代码为主,关键代码都有相关注释。 另外本文的运行环境维jupyter这与其他的ide环境运行代码稍微有些不同 1、类库引入已经相关测试 引

amao1998的博客 9965

2026.5.3:Ubuntu26.04下uv所需的环境变量pyproject.toml

本文档提供了Python开发环境的配置指南。主要包括: 设置环境变量(HF_ENDPOINT、UV_PYTHON_INSTALL_MIRROR等) 创建pyproject.toml配置文件,定义项目元数据(名称、版本等) 指定依赖项(torch系列库)及其安装源(PyTorch官方CUDA 12.8镜像) 配置Python版本要求(>=3.13,<3.14) 设置平台限制(Linux/Windows) 该配置适用于需要PyTorch CUDA 12.8支持的项目开发环境搭建。

拥抱具身智能,昇腾Ascend C 586

在登录Mysql时遇到//ERROR 1043 (08S01): Bad handshake的解决办法

在登录Mysql时遇到//ERROR 1043 (08S01): Bad handshake的解决办法 直奔主题,摸索了好多方法都不行,最后自己尝试综合各种方法才解决 首先要保证自己的环境变量已经设置好,然后我们就可以用mysql --version 来查看mysql的版本,来验证自己的环境变量配置是否成功! 然后一定不要在命令行启动mysql,我们可以右击我的电脑----点击管理 找到开启的mysql将其关闭,之后启动mysql80就可以通过mysql -uroot -p登陆啦!!!! ...

zqj1113333的博客 1万+

基于UC3842的反激电源的全面深入解析与MATLAB仿真

内置电流检测,可实现电流模式控制,提高系统的动态响应性。多种保护功能,如欠压锁定、过温保护、短路保护等,确保系统的安全可靠运行。宽工作电压范围,适应不同的电源设计需求。简单的外部元件配置,易于实现。UC3842的典型应用包括开关电源、DC-DC转换器和反激式电源等,其稳定性和可靠性在实际应用中得到了广泛验证。

qq_38334677的博客 1086

MySQL 5.7.34连接报错Bad handshake

1、工具报错 An error occurred while establishing the connection: Long Message: Communications link failure The last packet successfully received from the server was 2 milliseconds ago. The last packet sent successfully to the server was 1 milliseconds ago.

csj50的专栏 6685

S速度曲线轨迹规划(普通变频位置闭环控制算法详细介绍+SCL代码)

位置控制用PD控制器,详细内容介绍请查看下面博客文章:PD控制器算法详细解读_RXXW_Dor的博客-优快云博客鉴于积分和微分在工程上的大量应用,这篇博文主要讲解工程上的如何求导f'(x),导数反映的是函数(信号)的变化率,牛顿也是在研究运动的时候提出了微积分的概念,我们知道反映位移变化的快慢程度是速度v(t),反映速度变化快慢程度的物理量是加速度(速度的变化率)。

RXXW_Dor的博客 3883

uni-app - 最详细 H5 网页接入微信登录功能,提供公众号配置与详细注释示例代码(移动端网页实现点击登录按钮后 调用微信公众号授权登录功能 详细讲解接入流程与详细示例代码)官方最新超级详细教程

uniapp中H5微信登录,uniapp H5微信授权登录,微信公众号第三方网页(H5)授权登录(OAuth2.0)流程及逻辑详细教程,UNIAPP 开发H5 怎么实现微信公众号登录功能,uniapp如何实现H5网页的公众号微信登录,怎么做uniapp微信登录,uniapp h5项目怎么实现微信登录的功能,uniapp微信浏览器H5授权微信登录,UniApp开发H5接入微信登录的全过程,uniapp的H5页面使用微信登录,uniapp H5微信授权登录,H5之微信授权登陆 (uniapp网页版微信授权登录)

🏆 前端领域优质创作者 7404

mysql升级版本方法_故障分析 | Bad handshake,升级 5.7.28 引起的“血案”

作者:陈俊聪任职于中移信息基础平台部数据库组,负责 MySQL 数据库运维工作。引言作为一名 DBA 碰到过升级出问题需要回退么?碰到过回退还解决不了问题么?我有幸遇到了一次凶险的升级“血案”。问题来自协助客户升级 MySQL,以修复一个安全漏洞。升级版本为 5.7.30,但这个问题源于 5.7.28,并且影响 5.7.28 以上的版本,所以文章主要对比 5.7.27 和 5.7.28 版本。注意...

weixin_39550940的博客 2657

Linux LT8912b调试记录(MIPI转LVDS/HDMI)

本文记录了在RK3588平台上使用LT8912B芯片实现MIPI转LVDS/HDMI的调试过程。主要包含设备树配置、驱动代码实现及常见问题解决。调试重点包括:1)正确配置1280x800分辨率的LVDS屏幕参数;2)确保I2C总线正常通信;3)解决花屏、图像抖动、黑屏等问题,涉及lane-rate计算、同步信号极性调整及MIPI模式选择。文中提供了详细的寄存器配置代码和故障排查方法,特别强调了I2C通信验证和电压匹配的重要性。通过参数优化和多种模式测试,最终实现了稳定的视频输出转换。

qq_45147279的博客 1086

mysql bad handshark_故障分析 | Bad handshake,升级 5.7.28 引起的“血案”

作者:陈俊聪任职于中移信息基础平台部数据库组,负责 MySQL 数据库运维工作。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。引言作为一名 DBA 碰到过升级出问题需要回退么?碰到过回退还解决不了问题么?我有幸遇到了一次凶险的升级“血案”。问题来自协助客户升级 MySQL,以修复一个安全漏洞。升级版本为 5.7.30,但这个问题源于 5.7.28,...

weixin_28895791的博客 7034

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

pom mysql 连接5.7_故障分析 | Bad handshake,升级 5.7.28 引起的“血案”

作者:陈俊聪任职于中移信息基础平台部数据库组,负责 MySQL 数据库运维工作。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。引言作为一名 DBA 碰到过升级出问题需要回退么?碰到过回退还解决不了问题么?我有幸遇到了一次凶险的升级“血案”。问题来自协助客户升级 MySQL,以修复一个安全漏洞。升级版本为 5.7.30,但这个问题源于 5....

weixin_29932039的博客 824

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

5.5升级5.7回退 mysql_故障分析 | Bad handshake,升级 5.7.28 引起的“血案”

引言作为一名 DBA 碰到过升级出问题需要回退么?碰到过回退还解决不了问题么?我有幸遇到了一次凶险的升级“血案”。问题来自协助客户升级 MySQL,以修复一个安全漏洞。升级版本为 5.7.30,但这个问题源于 5.7.28,并且影响 5.7.28 以上的版本,所以文章主要对比 5.7.27 和 5.7.28 版本。注意不是 bug,后面会详细说明!一、现象MySQL 从 5.7.27 升级到 5....

weixin_34832150的博客 290

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

mysql 5.7不支持declare_故障分析 | Bad handshake,升级 5.7.28 引起的“血案”

作者:陈俊聪任职于中移信息基础平台部数据库组,负责 MySQL 数据库运维工作。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。引言作为一名 DBA 碰到过升级出问题需要回退么?碰到过回退还解决不了问题么?我有幸遇到了一次凶险的升级“血案”。问题来自协助客户升级 MySQL,以修复一个安全漏洞。升级版本为 5.7.30,但这个问题源于 5.7.28,...

weixin_39620099的博客 489

MySQL连接报错Bad handshake与跨版本迁移数据

MySQL 5.7.34连接报错Bad handshake 怎么解决MySQL|Aborted connection 日志分析

软件设计师到程序员 1376

mysql日志报错报错:Bad handshake

MySQL 5.5.45+, 5.6.26+和5.7.6+的要求,如果没有设置显式选项,则必须默认建立SSL连接。为了符合不使用SSL的现有应用程序,将verifyServerCertificate属性设置为“false”。导致数据库报错的原因是客户端那边是java程序启用了ssl连接,java程序日志如下。方法二、修改mysql的my.cnf文件在 [mysqld] 下面添加。方法一、 修改JDBC的连接串改为。MySQL版本:5.7.4。mysql日志报错如下。

qq_50247813的博客 2048

MySQL 3306端口被占用 ERROR 1043 (08S01): Bad handshake

连接数据库出现以下错误提示如何解决: 错误提示为该端口为MySQL默认端口号,由于被占用,以至于不能够连接到数据库 解决端口占用问题步骤如下: win+R -> 运行-cmd, 在控制台里输入 netstat -ano, 找到 3306 端口号 ,记住对应的PID 然后打开任务管理器 -> 查看 -> 选择列 -> 勾上 PID(进程标识符) -> 确定...

^Being^ 2万+

连接数据库报错bad handshake

堡垒机账号没有授权访问权限。

nchangyu 402

mysql链接数据库失败, 提示bad handleshake

情景复原: 某电脑昨天还能正常链接数据库, 今天就提示链接不上, 提示bad handleshake错误 原因是服务器端口(3306)被占用 借机学习window下查看端口占用情况以及杀死进程的常用命令 分析: 1. 用navicat链接, 提示Access Denied, 按理来说一般是密码错误, 可密码是没有问题的, 于是排除 2. 怀疑是不是mysq...

rambler_designer 2595

MySQL8.0.19,显示ERROR 1043 (08S01): Bad handshake 错误

MySQL8.0.19,显示ERROR 1043 (08S01): Bad handshake 错误 求路过的大神看看 之前安装好了MySQL8.0.19,也正常运行过,有段时间没有用了,doc命令下敲一直显示ERROR 1043 (08S01): Bad handshake 看了网上的帖子33.06端口占用,用netstat -ano |findstr 3306 ,找到端口号结束了进程,又重新敲了net start mysql启动服务还是提示同样的问题,请问大神这种要怎么处理哦 MySQL连接工具可以

it_sen的博客 1万+

Django mysql bad handshake爬坑记录

这个bad hanshake报错不是来自于django的设置问题, 而是pymysql与mysql的连接问题 单独开个文件,用pymysql去链接mysql,同样是这个问题 解决办法: Pip uninstall pymysql pip install pymysql==0.6.7 再去链接,能连接上 还没有完事, django里面调用 python manage.py m...

cc9200的博客 2788
上一篇: 第04期:列 CHECK 约束
下一篇: 第11问:不小心对一个大表进行了 update,怎么看进度?
爱可生开源社区
博客等级 码龄8年 1936粉丝 1004原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值