在撰写本文时,使用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”相关推荐

  1. python的mysql模块_Python中操作mysql的pymysql模块详解

    前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持3.x版本. 本文测试python版本:2.7.11. ...

  2. python里面装数据库_python 安装操作 MySQL 数据库.

    以ubuntu和mysql为例 检查自己的机器上面有没有安装数据库 1 xpower@xpower-CW65S:~$ sudo service mysql start2 [sudo] xpower 的 ...

  3. mac版eclipse连接mysql_将Eclipse连接到mysql mac os x jdbc驱动程序

    我想在学习java sql的东西时运行下面的代码,但是,我已经创建了数据库,并且从终端尝试了它的好处.将Eclipse连接到mysql mac os x jdbc驱动程序 1,我得到这个错误 java ...

  4. python 自动化 mysql 部署_Python自动化管理Mysql数据库教程

    Python自动化管理Mysql数据库教程 发布时间:2020-05-28 11:14:31 来源:51CTO 阅读:238 作者:三月 下面一起来了解下Python自动化管理Mysql数据库教程,相 ...

  5. python如何删除mysql数据库_python删除数据mysql数据库连接

    Python学习之旅:访问MySQL数据库 Python学习之旅:访问MySQL数据库 MySQL是Web世界中使用最广泛的数据库服务器.为服务器端设计的数据库,能承受高并发访问. python如何使 ...

  6. java连接mysql禁用ssl_java - 连接到MySQL数据库时有关SSL连接的警告

    java - 连接到MySQL数据库时有关SSL连接的警告 通过以下两个类,我尝试连接到MySQL数据库. 但是,我总是得到这个错误: Wed Dec 09 22:46:52 CET 2015 WAR ...

  7. php mysql pdo use_PHP连接到mysql的方法--mysqli和PDO

    php连接到mysql数据库,经典的方式就是使用mysql_connect(),具体代码如下: mysql_connect($db_host, $db_user, $db_pass) or die(m ...

  8. 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 ...

  9. python连接oracle数据库_Python连接oracle数据库 例子一

    step1:下载cx_Oracle模块,cmd--pip install cx_Oracle step2: 1 import cx_Oracle #引用模块cx_Oracle 2 conn=cx_Or ...

最新文章

  1. Mocha+should+Karma自动化测试教程
  2. MySQL主从失败 错误Got fatal error 1236
  3. sqlserver附加数据库错误823的解决方案
  4. 谈谈2018年区块链大事件
  5. P4343-[SHOI2015]自动刷题机【二分答案】
  6. 三相阻容降压供电DCDC电源
  7. 项目 协程-实现非抢占式TCP服务器
  8. Windows下安装Nginx+php+mysql环境
  9. RedHat Linux 5企业版安装telnet
  10. 汉字转拼音 名字转拼音 多音字姓名
  11. 粒子群优化算法及其应用
  12. Linux命令行大全
  13. python-pptx 操作PPTx幻灯片文件删除并替换图片
  14. Incapsula的全球网络地图
  15. 15 个 Python 开源项目,使用 PyQt 做小型桌面应用!
  16. Library projects cannot set applicationId问题解决
  17. 报错java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String解决踩坑
  18. 流程图法编写测试用例
  19. 用递归实现求n!阶层和菲波那切数列
  20. AbandonedObjectPool is used (org.apache.commons.dbcp.AbandonedObjectPool@7b3106ec)

热门文章

  1. php去掉第一个空格,php怎么去除前面空格
  2. Trackformer复现笔记
  3. 【大厂智力题】水桶倒水问题
  4. 一个3升的桶和一个5升的桶,怎么得到4升的水。
  5. Sublime SystemVerilog安装
  6. Solr同义词分析器
  7. matlab legend换行 多个legend 阵列排布
  8. Invalid or unexpected token(数据格式错误)
  9. [全文]DDD话语批评之一:评张逸的“状态和事件本质相同”
  10. 荣耀升级android版本最好用,荣耀20PRO:升级MagicUI3.1后,凭什么感觉还能再战一年?...