簡體   English   中英

如何為 SSL 配置 PyMySQL 連接?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM