Python ssl不适用于MySQLdb,但适用于mysqlconnector

Python ssl不适用于MySQLdb,但适用于mysqlconnector,python,mysql,ssl,mysql-python,mysql-connector-python,Python,Mysql,Ssl,Mysql Python,Mysql Connector Python,不幸的是,我无法让MySQLdb工作,也无法通过命令行连接到需要使用SSL的AWS服务器。通过SequelPro,这项功能出奇地工作良好 什么有效? 除了上面提到的GUI之外,我以编程方式使用mysqlconnector而不是MySQLdb作为引擎,并传递ssl参数,这样做可以: from sqlalchemy import create_engine import pandas as pd pd.read_sql("SHOW DATABASES", create_engine(CO

不幸的是,我无法让MySQLdb工作,也无法通过命令行连接到需要使用SSL的AWS服务器。通过SequelPro,这项功能出奇地工作良好

什么有效? 除了上面提到的GUI之外,我以编程方式使用
mysqlconnector
而不是
MySQLdb
作为引擎,并传递ssl参数,这样做可以:

from sqlalchemy import create_engine
import pandas as pd

pd.read_sql("SHOW DATABASES", 
    create_engine(CONNECTION_STRING.replace('mysqldb', 'mysqlconnector'),
    connect_args={'ssl_ca': '~/Downloads/rds-combined-ca-bundle.pem'}))
什么不起作用? 出于某些原因,我不想使用mysqlconnector,而是使用MySQLdb。因此,我尝试了以下两种方法:

conn = create_engine(CONNECTION_STRING)
pd.read_sql_query("SHOW DATABASES", conn)

conn = create_engine(
    CONNECTION_STRING,
    connect_args={'ssl': {'ca': '~/Downloads/rds-combined-ca-bundle.pem'}})
pd.read_sql_query("SHOW DATABASES", conn)
对于第一个,它给出了预期的拒绝访问:

OperationalError: (_mysql_exceptions.OperationalError) (1045, "Access denied for user 'MYUSER'@'MYHOST' (using password: YES)") (Background on this error at: http://sqlalche.me/e/e3q8)
对于第二个问题:

OperationalError: (_mysql_exceptions.OperationalError) (2026, 'SSL connection error: error:00000001:lib(0):func(0):reason(1)') (Background on this error at: http://sqlalche.me/e/e3q8)
通过谷歌搜索“
error:00000001:lib(0):func(0):reason(1)
”错误,我想到了误用该软件包,并进行了多次尝试,基本上(包括
mode=VERIFY\u IDENTITY
,传递密码)如下:

抛出相同的错误

思想 可能这在mysqlconnector上起作用(不传递任何内容),因为
ssl
包(据我所知,这两个选项都没有被我尝试过的其他两个选项使用,但肯定是从connector)在
ssl上输出。get\u default\u verify\u path()

,因此有一些默认配置使其工作(sequelPro可能也是如此)。但总的来说,我只是不明白为什么它与sequelPro和连接器软件包配合得很好,而与命令行和MySQLdb配合得不好

尝试以下操作(从)效果良好:

mysql -u MYUSER -h MYHOST --ssl -p
但由于不推荐使用
--ssl
标志,因此不推荐使用

我希望你们中的一些人能看到我遗漏了什么

DefaultVerifyPaths(cafile='~/anaconda2/ssl/cert.pem', capath=None, openssl_cafile_env='SSL_CERT_FILE', openssl_cafile='~/anaconda2/ssl/cert.pem', openssl_capath_env='SSL_CERT_DIR', openssl_capath='~/anaconda2/ssl/certs')
mysql -u MYUSER -h MYHOST --ssl -p