簡體   English   中英

pymysql無法與SSL連接

[英]pymysql cannot connect with SSL

我試圖使用python連接到MySQL數據庫,但我收到一個奇怪的錯誤。 事實上,我可以使用mysql控制台命令中的相同連接值,並且連接沒有任何問題。

這是我正在使用的確切代碼:

從check導入pymysql導入AgentCheck

class DelayedJobCheck(AgentCheck):
    def check(self, instance):
        self.log.info("testing connection")
        self.log.info(instance)

        connection = pymysql.connect(**instance)

        cur = cnx.cursor(buffered=True)
        cur.execute("SHOW STATUS LIKE 'Ssl_cipher'")
        print(cur.fetchone())
        cur.close()
        cnx.close()

        self.gauge('hello.world', 1)

這是我得到的錯誤:

Traceback (most recent call last):
  File "/opt/datadog-agent/agent/checks/__init__.py", line 661, in run
    self.check(copy.deepcopy(instance))
  File "/opt/datadog-agent/agent/checks.d/delayed_job.py", line 10, in check
    connection = pymysql.connect(**instance)
  File "/opt/datadog-agent/embedded/lib/python2.7/site-packages/pymysql/__init__.py", line 88, in Connect
    return Connection(*args, **kwargs)
  File "/opt/datadog-agent/embedded/lib/python2.7/site-packages/pymysql/connections.py", line 644, in __init__
    self._connect()
  File "/opt/datadog-agent/embedded/lib/python2.7/site-packages/pymysql/connections.py", line 869, in _connect
    raise exc
OperationalError: (2003, u"Can't connect to MySQL server on '192.168.199.86' ([SSL: SSL_NEGATIVE_LENGTH] dh key too small (_ssl.c:590))")

我在Ubuntu盒子上運行此代碼,但我最初可能是因為SSL CA是自生成的證書。 所以我按照這里的步驟但是,它沒有任何區別。 此外,我已經驗證運行此代碼的進程具有對cert文件的完全訪問權限

還有什么想法可能導致這個問題嗎?

由於錯誤的信息說dh鍵太小,一個更大的鍵可能會有所幫助。 用dh4096.pem替換默認的dh512.pem文件

sudo wget "https://git.openssl.org/gitweb/?p=openssl.git;a=blob_plain;f=apps/dh4096.pem" -O dh4096.pem

參考: http//www.alexrhino.net/jekyll/update/2015/07/14/dh-params-test-fail.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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