python连接mysql失败_Python连接到MySQL失败,错误为“dh key too small”
在撰写本文时,使用mysql连接器python 2.1.4来自Oracle的纯python模块(您使用的是2.1.3版本的fork)支持连接字符串中未记录的连接配置kwargssl_cipher(因为它基本上会将其传递给python的ssl模块)。因此,从密码列表中去掉所有Diffie-Hellman密码,就可以解决这个问题了,这取决于mysql服务器是否支持非Diffie-Hellman密码。以下是针对MySQL 5.6.17-65.0-rel65.0-log的官方python2.7.12amd64 win32。注意:这只在处理模块的纯python版本时才起作用!。如果使用编译后的C扩展模块,它可能不接受ssl_cipher,YMMV。在import mysql.connector
import getpass
dsn = {
'database': 'INFORMATION_SCHEMA',
'host': 'mysqlserver',
'port': '3306',
'ssl_ca': '',
# ^^^ this sets cert_reqs = ssl.CERT_NONE
# in mysql/connector/network.py:415
# so no server cert verification is attempted
'use_pure': True
# setting ssl_cipher may only work with the pure python driver
# but this is the default anyway
}
dsn['user'] = raw_input('Enter Username: ')
dsn['password'] = getpass.getpass('Enter password: ')
try:
dbconn = mysql.connector.connect(**dsn)
# this will raise the 'Weak DH key' exception
except mysql.connector.errors.InterfaceError as e:
print e
dsn['ssl_cipher'] = 'HIGH:!DH:!aNULL'
# this is a standard openssl ciphersuite string
# where !DH and !aNULL means don't use any DH ciphers or null ciphers
# this option is officially undocumented
try:
dbconn = mysql.connector.connect(**dsn)
except mysql.connector.errors.InterfaceError:
raise
else:
assert isinstance(dbconn, mysql.connector.connection.MySQLConnection)
香肠是怎么做的
在mysql connector python 2.1.4中,模块源代码中的以下行显示了这一点的工作原理:
mysql/connector/abstracts.py: Lines 298 - 313:
^{pr2}$
然后在mysql/connector/connection.py lines 130-134:if client_flags & ClientFlag.SSL and ssl_options:
packet = self._protocol.make_auth_ssl(charset=charset,
client_flags=client_flags)
self._socket.send(packet)
self._socket.switch_to_ssl(**ssl_options)
_socket.switch_to_ssl()位于mysql/connector/network.py lines 406-421:def switch_to_ssl(self, ca, cert, key, verify_cert=False, cipher=None):
"""Switch the socket to use SSL"""
if not self.sock:
raise errors.InterfaceError(errno=2048)
try:
if verify_cert:
cert_reqs = ssl.CERT_REQUIRED
else:
cert_reqs = ssl.CERT_NONE
self.sock = ssl.wrap_socket(
self.sock, keyfile=key, certfile=cert, ca_certs=ca,
cert_reqs=cert_reqs, do_handshake_on_connect=False,
ssl_version=ssl.PROTOCOL_TLSv1, ciphers=cipher)
self.sock.do_handshake()
python连接mysql失败_Python连接到MySQL失败,错误为“dh key too small”相关推荐
- python的mysql模块_Python中操作mysql的pymysql模块详解
前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持3.x版本. 本文测试python版本:2.7.11. ...
- python里面装数据库_python 安装操作 MySQL 数据库.
以ubuntu和mysql为例 检查自己的机器上面有没有安装数据库 1 xpower@xpower-CW65S:~$ sudo service mysql start2 [sudo] xpower 的 ...
- mac版eclipse连接mysql_将Eclipse连接到mysql mac os x jdbc驱动程序
我想在学习java sql的东西时运行下面的代码,但是,我已经创建了数据库,并且从终端尝试了它的好处.将Eclipse连接到mysql mac os x jdbc驱动程序 1,我得到这个错误 java ...
- python 自动化 mysql 部署_Python自动化管理Mysql数据库教程
Python自动化管理Mysql数据库教程 发布时间:2020-05-28 11:14:31 来源:51CTO 阅读:238 作者:三月 下面一起来了解下Python自动化管理Mysql数据库教程,相 ...
- python如何删除mysql数据库_python删除数据mysql数据库连接
Python学习之旅:访问MySQL数据库 Python学习之旅:访问MySQL数据库 MySQL是Web世界中使用最广泛的数据库服务器.为服务器端设计的数据库,能承受高并发访问. python如何使 ...
- java连接mysql禁用ssl_java - 连接到MySQL数据库时有关SSL连接的警告
java - 连接到MySQL数据库时有关SSL连接的警告 通过以下两个类,我尝试连接到MySQL数据库. 但是,我总是得到这个错误: Wed Dec 09 22:46:52 CET 2015 WAR ...
- php mysql pdo use_PHP连接到mysql的方法--mysqli和PDO
php连接到mysql数据库,经典的方式就是使用mysql_connect(),具体代码如下: mysql_connect($db_host, $db_user, $db_pass) or die(m ...
- 10061 mysql,Navicat无法连接到MySQL server的10061错误
修改服务器上 /etc/mysql/mysql.conf.d(mysqld.cnf),配置中,默认bind-address是127.0.0.1,可将其注释掉或者改成0.0.0.0,restart my ...
- python连接oracle数据库_Python连接oracle数据库 例子一
step1:下载cx_Oracle模块,cmd--pip install cx_Oracle step2: 1 import cx_Oracle #引用模块cx_Oracle 2 conn=cx_Or ...
最新文章
- Mocha+should+Karma自动化测试教程
- MySQL主从失败 错误Got fatal error 1236
- sqlserver附加数据库错误823的解决方案
- 谈谈2018年区块链大事件
- P4343-[SHOI2015]自动刷题机【二分答案】
- 三相阻容降压供电DCDC电源
- 项目 协程-实现非抢占式TCP服务器
- Windows下安装Nginx+php+mysql环境
- RedHat Linux 5企业版安装telnet
- 汉字转拼音 名字转拼音 多音字姓名
- 粒子群优化算法及其应用
- Linux命令行大全
- python-pptx 操作PPTx幻灯片文件删除并替换图片
- Incapsula的全球网络地图
- 15 个 Python 开源项目,使用 PyQt 做小型桌面应用!
- Library projects cannot set applicationId问题解决
- 报错java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String解决踩坑
- 流程图法编写测试用例
- 用递归实现求n!阶层和菲波那切数列
- AbandonedObjectPool is used (org.apache.commons.dbcp.AbandonedObjectPool@7b3106ec)
热门文章
- php去掉第一个空格,php怎么去除前面空格
- Trackformer复现笔记
- 【大厂智力题】水桶倒水问题
- 一个3升的桶和一个5升的桶,怎么得到4升的水。
- Sublime SystemVerilog安装
- Solr同义词分析器
- matlab legend换行 多个legend 阵列排布
- Invalid or unexpected token(数据格式错误)
- [全文]DDD话语批评之一:评张逸的“状态和事件本质相同”
- 荣耀升级android版本最好用,荣耀20PRO:升级MagicUI3.1后,凭什么感觉还能再战一年?...