簡體   English   中英

Python並通過SSH連接到MySQL

[英]Python and Connecting to MySQL over SSH

我試圖連接到別人的“機器”上的MySQL數據庫。 當我使用Navicat for MySQL時,我沒有問題連接到它。 我試圖用Python做同樣的事情,所以我不必使用GUI界面。 我知道下面的所有信息都是正確的(即使我交換了假信息) - 有人能發現我哪里出錯嗎? 我得到的錯誤是OperationalError: (2005, "Unknown MySQL server host 'FTP_hostname' (0)")

我的代碼(使用paramiko for SSH):

import MySQLdb
import paramiko
import time

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('SSH_hostname', 22, username='me', password='pswrd')

time.sleep(1)

db = MySQLdb.connect(host="FTP_hostname", 
                     user="root", 
                     passwd="pswrd2",
                     db="MyDB")
cur = db.cursor()

再次,我將所有這些都放入Navicat並且連接沒有問題。 希望你能幫忙! 謝謝!

與大多數數據庫一樣,MySQL默認在本地運行,不允許從外部網絡訪問。 因此,您無法從外部計算機連接到它。

Navicat是一種明確用於數據庫遠程管理的軟件,可能通過SSH連接並通過它連接MySQL連接。 這樣它就可以像在本地安裝數據庫一樣,對於數據庫,它看起來好像是在本地訪問的。

您可以嘗試通過使用Paramiko創建隧道來做同樣的事情; 另見這個問題

如果您仍然需要通過SSH連接到遠程MySQL數據庫,我使用了一個名為sshtunnel的庫,它包裝和簡化了paramiko(sshtunnel的依賴項)的使用。

您可以使用一些示例代碼在另一個類似問題中查看我的答案以使用它。

db = MySQLdb.connect(host =“FTP_hostname”,

主機不需要是127.0.0.1(localhost),因為隧道正在使MySQL數據庫本地運行到運行python腳本的機器上嗎?

暫無
暫無

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

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