windows Python - MySQL SSL连接

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

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

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

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

oo7oh9g9

oo7oh9g91#

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

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

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

7rtdyuoh

7rtdyuoh2#

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

  1. db = MySQLdb.connect(host="host.name",
  2. port=3306,
  3. user="user",
  4. passwd="secret_password",
  5. db="database",
  6. ssl={'ssl':
  7. {'ca': '/path/to/ca/ca',
  8. 'key': '/path/to/ca/key',
  9. 'cert': '/path/to/ca/cert'
  10. }
  11. }
  12. )
wribegjk

wribegjk3#

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

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

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

gj3fmq9x

gj3fmq9x4#

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

jtoj6r0c5#

试试这个

  1. import ssl
  2. from databases import Database
  3. sslctx = ssl.create_default_context(ssl.Purpose.SERVER_AUTH,
  4. cafile='ca.pem')
  5. sslctx.verify_mode = ssl.CERT_REQUIRED
  6. sslctx.check_hostname = True
  7. sslctx.load_cert_chain(certfile='client.crt', keyfile='pkey.key')
  8. database = Database(DATABASE_URL, ssl=sslctx)

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

相关问题