首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python和通过SSH连接到MySQL

问Python和通过SSH连接到MySQL
EN

Stack Overflow用户
提问于 2014-01-27 16:22:32
回答 3查看 8.6K关注 0票数 3

我正试图连接到其他人的“机器”上的MySQL数据库。当我在MySQL中使用Navicat时,连接它是没有问题的。我试图对Python进行同样的处理,这样我就不必使用GUI界面了。我知道我下面的所有信息都是正确的(即使我交换假信息)我得到的错误是OperationalError: (2005, "Unknown MySQL server host 'FTP_hostname' (0)")

我的代码(在SSH中使用paramiko ):

代码语言:javascript
复制
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,没有问题。希望你能帮忙!谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-27 16:33:37

与大多数数据库一样,MySQL默认在本地运行,不允许从外部网络访问。因此,您不能从外部计算机连接到它。

Navicat是一个用于远程数据库管理的软件,它很可能通过SSH进行连接,并通过它来隧道MySQL连接。通过这种方式,它可以充当本地安装数据库的角色,而对于数据库来说,它似乎是本地访问的。

您可以尝试通过使用Paramiko创建隧道来做同样的事情;请参见this question。

票数 2
EN

Stack Overflow用户

发布于 2015-07-26 19:36:28

如果您仍然需要通过SSH连接到远程MySQL db,那么我已经使用了一个名为ssh隧道的库,它简化了paramiko的使用(ssh隧道的一个依赖项)。

您可以使用一些示例代码在另一个类似的问题中检查my answer。

票数 0
EN

Stack Overflow用户

发布于 2016-03-29 20:10:51

db = MySQLdb.connect(host="FTP_hostname",

主机是否不需要为127.0.0.1 (localhost),因为隧道将MySQL DB本地化到运行python的机器上?

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21386005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档