将 MySQL Connector 与 Python 结合使用时出现 SSL 连接错误

新手上路,请多包涵

我在 Anaconda 的环境中使用 Python 3.6(但我在 Python 2.7 中遇到了同样的错误)和 mysql-connector-python 来编写一个简单的脚本来访问我在 Hostgator 中托管的数据库。这是错误:

 Traceback (most recent call last):
  File "/home/usuario/anaconda3/envs/fakebook/lib/python3.6/site-packages/mysql/connector/connection_cext.py", line 176, in _open_connection
    self._cmysql.connect(**cnx_kwargs)
_mysql_connector.MySQLInterfaceError: SSL connection error: SSL_CTX_set_tmp_dh failed

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "teste.py", line 6, in <module>
    passwd="senha"
  File "/home/usuario/anaconda3/envs/fakebook/lib/python3.6/site-packages/mysql/connector/__init__.py", line 172, in connect
    return CMySQLConnection(*args, **kwargs)
  File "/home/usuario/anaconda3/envs/fakebook/lib/python3.6/site-packages/mysql/connector/connection_cext.py", line 78, in __init__
    self.connect(**kwargs)
  File "/home/usuario/anaconda3/envs/fakebook/lib/python3.6/site-packages/mysql/connector/abstracts.py", line 731, in connect
    self._open_connection()
  File "/home/usuario/anaconda3/envs/fakebook/lib/python3.6/site-packages/mysql/connector/connection_cext.py", line 179, in _open_connection
    sqlstate=exc.sqlstate)
mysql.connector.errors.InterfaceError: 2026 (HY000): SSL connection error: SSL_CTX_set_tmp_dh failed

我的代码很简单,它只是尝试连接到数据库:

 import mysql.connector

mydb = mysql.connector.connect(
    host="192.xxx.xxx.xx",
    user="root",
    passwd="senha"
)

print(mydb)

我在其他电脑上多次使用过这个库,我也通过我的电脑连接到同一个数据库,使用同一个库,它总是使用这个代码。我尝试使用 MySQL Workbench,它似乎正在使用我代码中的相同凭据连接到数据库。我已经尝试向服务器支持寻求帮助,我的 IP 被允许访问数据库,即使这样我也无法连接 Python。我试图重新安装库,但没有任何改变。

谢谢大家!

原文由 Julio 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

这对我有用(Ubuntu 16.04 LTS)。从终端:

  1. 重新创建证书(datadir 由您选择):

mysql_ssl_rsa_setup --datadir=/data/dir/

  1. 将以下内容添加到 /etc/mysql/mysql.conf.d/mysqld.cnf
 ssl-ca=/data/dir/cacert.pem

ssl-cert=/data/dir/server-cert.pem

ssl-key=/data/dir/server-key.pem

  1. 重启mysql服务器: sudo service mysql restart

原文由 mlcr 发布,翻译遵循 CC BY-SA 4.0 许可协议

我遇到了同样的问题,并通过添加 use_pure=True 此处 基于建议的参数来解决它:

 import mysql.connector as sql

db_connection = sql.connect(host='****', database='****', user='****', password='****', use_pure=True)

我的 mac 上的相关软件包:安装了 mysql-connector-python 8.0.16openssl 1.1.1b (均为 anaconda)。

原文由 HaMi 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题