2015-11-26 233 views
6

我想連接到使用python的MySQL數據庫,但我得到一個奇怪的錯誤。由於我可以使用來自mysql控制檯命令的相同連接值並且沒有問題連接,所以這一事實更加複雜。pymysql無法連接SSL

這裏是我使用完全相同的代碼:從檢查

進口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是一個自我生成的證書。所以我按照步驟here但是,它沒有任何區別。此外,我已驗證運行此代碼的過程可以完全訪問證書文件

任何想法還有什麼可能會導致此問題?

+0

看起來這是最新的OpenSSL軟件包在Linux的安全更新。通過運行 以下命令將您的OpenSSL軟件包降級到以前的版本: sudo apt-get install libssl-dev = 1.0.1-4ubuntu3 libssl-doc = 1.0.1-4ubuntu3 libssl1.0.0 = 1.0.1-4ubuntu3 openssl = 1.0.1-4ubuntu3 如果這不適合你,這裏有一個更長的步驟來嘗試。 https://groups.google.com/d/msg/security-onion/E7HdGGUuq6c/gqNBbT5TLw0J – Shahram

回答