Python - MySQL SSL 连接

Sil*_*310 5 python mysql windows ssl

我有一个 MySQL 服务器设置为使用 SSL,我也有 CA 证书。

当我使用 MySQL Workbench 连接到服务器时,我不需要证书。我还可以在没有 CA 证书的情况下在 Mac 上使用 Python 和 MySQLdb 连接到服务器。

但是当我尝试在 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'})  
Run Code Online (Sandbox Code Playgroud)

谁能指出Windows上的问题是什么?

小智 5

我刚刚得到了以下可以与 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'})
Run Code Online (Sandbox Code Playgroud)

这就是你所拥有的,所以这里一定发生了其他事情。我想知道您的本地 CA 文件或服务器上的证书是否有问题?您可以从服务器获取 CA 文件的副本吗?


小智 0

我使用 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'
            }
         }
)  
Run Code Online (Sandbox Code Playgroud)

  • 您确定这不会移动选项以使其停止使用 SSL 吗? (2认同)