我正试图连接到其他人的“机器”上的MySQL数据库。当我在MySQL中使用Navicat时,连接它是没有问题的。我试图对Python进行同样的处理,这样我就不必使用GUI界面了。我知道我下面的所有信息都是正确的(即使我交换假信息)我得到的错误是OperationalError: (2005, "Unknown MySQL server host 'FTP_hostname' (0)")
我的代码(在SSH中使用paramiko ):
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,没有问题。希望你能帮忙!谢谢!
发布于 2014-01-27 16:33:37
与大多数数据库一样,MySQL默认在本地运行,不允许从外部网络访问。因此,您不能从外部计算机连接到它。
Navicat是一个用于远程数据库管理的软件,它很可能通过SSH进行连接,并通过它来隧道MySQL连接。通过这种方式,它可以充当本地安装数据库的角色,而对于数据库来说,它似乎是本地访问的。
您可以尝试通过使用Paramiko创建隧道来做同样的事情;请参见this question。
发布于 2015-07-26 19:36:28
如果您仍然需要通过SSH连接到远程MySQL db,那么我已经使用了一个名为ssh隧道的库,它简化了paramiko的使用(ssh隧道的一个依赖项)。
您可以使用一些示例代码在另一个类似的问题中检查my answer。
发布于 2016-03-29 20:10:51
db = MySQLdb.connect(host="FTP_hostname",
主机是否不需要为127.0.0.1 (localhost),因为隧道将MySQL DB本地化到运行python的机器上?
https://stackoverflow.com/questions/21386005
复制相似问题