[英]How do I configure PyMySQL connect for SSL?
我正在嘗試使用 SSL 和 PyMySQL 連接我的數據庫,但我找不到關於語法是什么的好文檔。
這些憑據在 Workbench 和 CLI 中工作,但在使用 PyMySQL 時出現此錯誤。
無法連接到“server.domain.com”上的 MySQL 服務器([WinError 10061] 無法建立連接,因為目標機器主動拒絕它)”)
db_conn = pymysql.connect(
host=db_creds['host'],
user=db_creds['user'],
passwd=db_creds['passwd'],
db=db_creds['db'],
charset=db_creds['charset'],
ssl={'ssl':{'ca': 'C:/SSL_CERTS/ca-cert.pem',
'key' : 'C:/SSL_CERTS/client-key.pem',
'cert' : 'C:/SSL_CERTS/client-cert.pem'
}
}
)
如果我關閉 SSL 並刪除 SSL 參數,我可以連接不安全的。 我對 SSL 參數做錯了什么?
編輯:PyMySQL 現在希望 ssl 參數像這樣列出而不是在字典中。
db_conn = pymysql.connect(
host=db_creds['host'],
user=db_creds['user'],
passwd=db_creds['passwd'],
db=db_creds['db'],
charset=db_creds['charset'],
ssl_ca='C:/SSL_CERTS/ca-cert.pem',
ssl_key='C:/SSL_CERTS/client-key.pem',
ssl_cert='C:/SSL_CERTS/client-cert.pem'
)
感謝大家的幫助。 問題中列出的語法是正確的,但我嘗試連接的服務器使用的是非標准端口。 我需要添加
port = db_creds['端口']
謝謝 MannyKary 提供的線索。
對於需要 X509 的用戶,我在使用客戶端證書和密鑰連接 pyMysql 時遇到了同樣的問題,TiDB(與 mySQL 5.7 兼容)服務器抱怨沒有提供證書!!!
[2021/05/18 16:31:23.881 +00:00] [INFO] [privileges.go:258] ["ssl check failure, require x509 but no verified cert"] [user=mindline_root] [host=%]
查看 PyMysql 1.0.2 的源代碼,似乎 ssl 參數現在是布爾值而不是 ssl_dict,因此您應該將所有 ssl 參數放入單獨的參數中,例如,
db_conn = pymysql.connect(
host=db_creds['host'],
user=db_creds['user'],
passwd=db_creds['passwd'],
db=db_creds['db'],
charset=db_creds['charset'],
ssl_ca='C:/SSL_CERTS/ca-cert.pem',
ssl_key='C:/SSL_CERTS/client-key.pem',
ssl_cert='C:/SSL_CERTS/client-cert.pem'
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.