windows Python - MySQL SSL连接

4ktjp1zp  于 2023-02-16  发布在  Windows
关注(0)|答案(5)|浏览(112)

我有一个MySQL服务器设置为使用SSL,我也有CA证书。
当我使用MySQL Workbench连接到服务器时,我不需要证书。我也可以在Mac上使用Python和MySQLdb连接到服务器,而不需要CA证书。
但是,当我尝试在Windows计算机上使用完全相同的Python和MySQLdb设置进行连接时,我的访问被拒绝。看起来我需要CA。当我输入CA时,我得到以下错误
_mysql_exceptions.OperationalError: (2026, 'SSL connection error')
打开连接的代码如下:

db = MySQLdb.connect(host="host.name",    
                 port=3306,
                 user="user",         
                 passwd="secret_password",  
                 db="database", 
                 ssl={'ca': '/path/to/ca/cert'})

有谁能指出Windows上的问题吗?

oo7oh9g9

oo7oh9g91#

我刚刚获得了以下代码,可以在Python 2.7和MySQLdb(1.2.4)中使用:

database = MySQLdb.connect(host='hostname', user='username', db='db_name',
    passwd='PASSWORD', ssl={'ca': '/path/to/ca-file'})

这是你的,所以一定有什么别的事情发生在这里。我想知道你是否有什么不正确的地方CA文件或服务器上的证书?你能得到一个副本的CA文件从服务器上?

7rtdyuoh

7rtdyuoh2#

我使用pymysql,我有一些问题,使用SSL密钥和证书连接:对于“ssl”属性,我在里面设置了一个字典。尝试如下:

db = MySQLdb.connect(host="host.name",
    port=3306,
    user="user",
    passwd="secret_password",
    db="database",
    ssl={'ssl':
            {'ca': '/path/to/ca/ca',
             'key': '/path/to/ca/key',
             'cert': '/path/to/ca/cert'
            }
         }
)
wribegjk

wribegjk3#

我知道这有点老了,但是我找到了一种方法来让它工作。使用pymysql代替MySQLdb,并将连接写为:

import pymysql

conn = pymysql.connect(user = 'user', password = 'passwd'
, database = 'db', host = 'hst', ssl = {'ssl' : {'ca': 'pathtosll/something.pem'}})

人们忽略的一点(包括我自己)是ssl需要是一个包含键“ssl”的字典,它有另一个字典作为键“ca”的值。

gj3fmq9x

gj3fmq9x4#

import pymysql

conn = pymysql.connect(host= # your host, usually localhost,
user = # your username,
passwd = # your password,
db = #your database name ,
ssl ={'ssl': r'path of your pem file'})
jtoj6r0c

jtoj6r0c5#

试试这个

import ssl
from databases import Database
sslctx = ssl.create_default_context(ssl.Purpose.SERVER_AUTH, 
    cafile='ca.pem')
sslctx.verify_mode = ssl.CERT_REQUIRED
sslctx.check_hostname = True
sslctx.load_cert_chain(certfile='client.crt', keyfile='pkey.key')

database = Database(DATABASE_URL, ssl=sslctx)

数据库库库提供PostgreSQL,MySQL和SQLite的支持。对异步框架也很有用。

相关问题