【问题标题】:A way to disable SSL using python MySQLdb connector一种使用 python MySQLdb 连接器禁用 SSL 的方法
【发布时间】:2019-11-07 21:25:35
【问题描述】:

使用 SSL 和 python 连接器打开连接会出现以下错误:

MySQLdb.connect(host='host',user='user,passwd='xxx',db='xxx',)

OperationalError: (2026, 'SSL 连接错误: ASN: unknown key OID type')

我使用bash mysql命令时也是这样:

mysql -p -u 用户 -h 主机
输入密码:
ERROR 2026 (HY000): SSL 连接错误: ASN: unknown key OID type

我发现的唯一方法是使用 --ssl-mode=DISABLED

mysql -p -u 用户 -h 主机 --ssl-mode=DISABLED
输入密码:
欢迎使用 MySQL 监视器。命令以 ; 结尾或 \g.

有什么方法可以使用 python 连接器来模拟这个吗? 我在 Ubuntu 16.04 和 python 3.5.2 上使用 mysql v 5.7.26。

【问题讨论】:

  • 对于后代,通过将连接器从 mysql-connector-python 更改为连接器来解决该问题。它的功能 mysql.connector.connect 有 kwarg ssl_disabled = True。

标签: python mysql ssl mysql-python


【解决方案1】:

正如原始发帖人在他的评论中提到的那样,在 Python 中可以使用 pip install mysql-connector-python 然后使用 ssl_disabled 键。

mysql.connect(host=HOST, database=DATABASE, port=PORT, user=USER, password=PASSWORD, ssl_disabled=True/False)

所以代码看起来像这样: '''

import mysql.connector as mysql

db_connection = mysql.connect(host=HOST, database=DATABASE, port=PORT, user=USER, password=PASSWORD, ssl_disabled=True)
print("Connected to:", db_connection.get_server_info())
db_handler = connection.cursor()
db_handler.execute("SELECT * from your_table")
fetch_result = db_handler.fetchall()
for item in fetch_result:
    print(item)

'''

【讨论】:

    【解决方案2】:

    根据手册,“ssl”键管理 ssl 协议(如果存在)。所以我想在这个标签上传递一个 void 字典,可能对你有用。 (五月工作 试试这个:

    mysql_config = {
            'user': 'DB-user',
            'password': 'userpassword',
            'host': 'localhost',
            'database': 'your-DB-name',
            'port': '3306',
            'ssl': {}
        }
    self.connection = MySQLdb.connect(**mysql_config )
    self.connection.autocommit(True)
    return database.DBOK
    

    【讨论】:

    • 我只是想向您报告一个错字,以防您想更正它:句子 "(Works in may Try this:" 听起来有些截断。跨度>
    【解决方案3】:

    在 python 中不使用 SSL 连接到 mysql/mariaDB:

    import mysql.connector
    from mysql.connector import Error
    
    mysql_config = {
            'user': 'DB-user',
            'password': 'userpassword',
            'host': 'localhost',
            'database': 'your-DB-name',
            'port': '3306',
            'ssl_disabled': True
        }
    
    try:
        cnx = mysql.connector.connect(**mysql_config)
        if cnx.is_connected():
            print('connected to database') 
    
    except Error as e:
        print("mysql DB connection error")
        print(e)
    

    另请参阅完整文档:Mysql Connector/Python Connection Arguments

    如果您想通过 mysqlx 连接,请参阅 Getting started with mysqlx 上的示例。

    【讨论】:

    • 我收到AttributeError: Unsupported argument 'ssl_disabled' 错误
    猜你喜欢
    • 2011-03-11
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多