我设置的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'})
有人能指出窗户上的问题是什么吗?
答案 0 :(得分:1)
我刚使用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'})
这就是您所拥有的,因此这里还必须进行其他操作。我想知道您的本地CA文件是否有问题,或者服务器上的证书是否有问题?您可以从服务器获取CA文件的副本吗?
答案 1 :(得分: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'
}
}
)
答案 2 :(得分:0)
我知道这有点老了,但是我找到了一种方法来使其工作。使用pymysql代替MySQLdb并将连接写为:
var myAnswer = {"VehicleResults":[{"Id":"0","FinanceProductResults":[{"Term":36,"AnnualMileage":10000,"Deposits":1000,"ProductResults":[{"Key":"PCP","Payment":170.08},{"Key":"HP","Payment":279.37}]}]}]}
myAnswer.VehicleResults[0].FinanceProductResults[0].ProductResults[0]
人们(包括我自己)想念的要点是ssl必须是包含以下内容的字典 键“ ssl”,其中另一个字典具有键“ ca”作为值。这应该对您有用。
答案 3 :(得分:0)
import pymysql
conn = pymysql.connect(host= # your host, usually localhost,
user = # your username,
passwd = # your password,
db = #your database name ,
ssl ={'ssl': r'path of your pem file'})