我在AWS上运行了一个mysql服务器,需要通过SSL进行身份验证(但不需要用户证书)。
当使用mysqlconnector和空的ssl参数时,它也有效:'ssl_ca': ''
。但不幸的是没有使用MySQLdb。
我尝试过(使用连接字符串)
1
conn = sqlalchemy.create_engine(
con_str,
connect_args={'ssl':{'ca': ''}})
pd.read_sql_query('select id from mytable limit 1', conn)
2
conn = sqlalchemy.create_engine(
# the following is used to enforce mysqlconnector usage
con_str.replace("mysql:", "mysql+mysqlconnector:"),
connect_args={'ssl_ca':''})
pd.read_sql_query('select id from mytable limit 1', conn)
第二个工作正常,第一个没有。当然,我也尝试使用裸连接器(MySQLdb.connect()
和mysql.connector.connect()
)并遇到相同的行为,并且无法使MySQLdb工作。
你可以给我一些关于如何在没有证书(和密钥)的MySQLdb中使用SSL的提示吗?
我们从另一个提供商切换到AWS,所以很遗憾没有像以前那样的ssh和现在的SSL。而且我没有管理数据库,所以我无法使用用户证书,只是被迫使用没有任何证书的ssl。
一位同事解释说,从安全角度来看,这是可以的,因为服务器会发送证书。我们相信他是属于相应URL的人,因为我们信任CA.
答案 0 :(得分:1)
在您的情况下可能无法正常工作,但我也想在pymysql中执行此操作,并且似乎通过了任何关键工作来传递命令:
connect_args={'ssl': {'key': 'whatever'}}
但是后来我发现mysql-connector-python即使没有任何参数也尝试ssl。我换了另一个原因。