【问题标题】:Python code to establish an ssh to remote server and then connect to MYSQLPython代码建立一个ssh到远程服务器然后连接到MYSQL
【发布时间】:2013-06-15 07:38:43
【问题描述】:

我正在尝试编写一些 python 代码来建立与远程服务器的 ssh 连接,然后执行一些 MYSQL 查询(为简单起见,我在示例中省略了这些)。据我所知,ssh 正在工作,但我似乎无法进入数据库。有人可以帮忙吗?

import MySQLdb
import decimal
import operator
import os
import paramiko



mykey = paramiko.RSAKey.from_private_key_file("C:/Users/Desktop/keyname.pem")

ssh = paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect('ec2-blah-blah.compute.amazonaws.com', username='ec2-user', pkey = mykey) 

conn = MySQLdb.connect(
    host="127.0.0.1",
    port = 3306,
    user="root",
    passwd="password",
    db="MyDB")

我得到的错误是:

文件“C:\Python27\lib\site-packages\MySQLdb__init__.py”,第 81 行,在 Connect 返回连接(*args,**kwargs) 文件“C:\Python27\lib\site-packages\MySQLdb\connections.py”,第 187 行,在 in 它 super(Connection, self).init(*args, **kwargs2) _mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server on '12 7.0.0.1' (10061)")

【问题讨论】:

  • 你不能那样做。您正在做的是打开与远程计算机的 SSH 连接,然后尝试访问本地 MySQL 服务器,您没有访问远程 MySQL 服务器
  • 您似乎正在尝试创建 ssh 隧道。但你需要先检查 paramiko 关于隧道的能力。

标签: python mysql ssh paramiko


【解决方案1】:

您在连接对象中使用的 IP 地址“127.0.0.1”指的是 localhost,即运行程序的计算机。您无法远程连接到另一台计算机的本地主机。您需要将主机ip地址替换为远程服务器的ip地址。

此外,如果连接正确,您应该只需要 MySQLdb.connect 对象,而不需要 ssh 对象。

【讨论】:

    猜你喜欢
    • 2021-07-08
    • 2015-10-02
    • 2023-03-08
    • 2016-02-13
    • 2020-06-17
    • 2018-12-04
    • 2016-08-04
    • 1970-01-01
    • 2011-05-05
    相关资源
    最近更新 更多