不幸的是,我无法让MySQLdb正常工作,也无法通过命令行连接到需要使用SSL的AWS服务器。通过Sequempro这很奇怪的工作。在
除了上面提到的GUI之外,我以编程方式使用mysqlconnector
而不是{
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。因此,我尝试了以下两种方法:
^{pr2}$对于第一个,它给出预期的访问被拒绝:
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)
从google上搜索到“error:00000001:lib(0):func(0):reason(1)
”错误,我想到了误用包,并多次尝试了各种变体(包括mode=VERIFY_IDENTITY
,传递密码)如下:
mysql -h HOST --ssl-ca=~/Downloads/rds-combined-ca-bundle.pem -u USER -p
Enter password:
ERROR 2026 (HY000): SSL connection error: error:00000001:lib(0):func(0):reason(1)
抛出同样的错误。在
可能这在mysqlconnector上有效(不传递任何内容),因为ssl
包(据我所知,我尝试过的其他两个选项都没有使用它,但肯定是从connector)输出的ssl.get_default_verify_paths()
:
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')
,所以有一些默认的配置可以让这个功能正常工作(sequelPro可能也一样)。但总的来说,我只是不明白为什么它能很好地与sequepro和connector包一起工作,而不是命令行和MySQLdb。在
尝试以下操作(从here)可以正常工作:
mysql -u MYUSER -h MYHOST --ssl -p
但由于--ssl
标志的不推荐使用。在
我希望你们中的一些人能看到我遗漏了什么!在
目前没有回答
相关问题 更多 >
编程相关推荐