【问题标题】:MySQL-Python code to query a MYSQL database through an SSH tunnelMySQL-Python 代码通过 SSH 隧道查询 MYSQL 数据库
【发布时间】:2013-08-21 12:24:00
【问题描述】:

我可以通过 ssh 访问 MySQL 数据库,

有人可以指导我使用 MySQL-python 代码来让我这样做吗?

我需要将查询结果保存在本地 WINDOWS 计算机上,

谢谢,

【问题讨论】:

标签: mysql mysql-python


【解决方案1】:

您需要为您的 sql 服务器打开一个 SSH 隧道,然后您可以运行 paramiko 以本地连接到您在本地使用的端口。这在 *nix 系统中很容易完成,我相信您也可以为 windows 下载 ssh 命令行。试试 putty 或 plink,见here。我所做的是我像这样运行一个 shell 脚本,然后我执行我的 paramiko python 脚本,然后我杀死了

ssh -N remote_server@54.221.226.240 -i ~/.ssh/my_ssh_key.pem -L 5433:localhost:5432 
python paramiko_connect.py
kill pkill -f my_ssh_key.pem  # kill using the pattern, 
#see ''ps aux | grep my_ssh_key.pem'' to see what it will kill

-N 表示不执行任何命令,-L 是用于隧道的本地端口,后跟远程服务器端口,假设您已经连接到该服务器。

我的 postgres 服务器对我来说就像一个魅力,我也确实在 mysql 上尝试过。

【讨论】:

    【解决方案2】:

    您可以使用 SSH 端口转发来执行此操作。事实上,谷歌的第一次点击看起来会引导您完成这个确切的事情:

    http://www.howtogeek.com/howto/ubuntu/access-your-mysql-server-remotely-over-ssh/

    而且由于您使用的是 Windows,因此将其转换为使用 PuTTY:

    https://intranet.cs.hku.hk/csintranet/contents/technical/howto/putty-portforward.jsp

    然后您将使用您的 python 脚本连接到 localhost:3306,SSH 会将其转发到另一台机器,您最终将连接到远程 mysql 实例。

    【讨论】:

    • 我很抱歉;似乎我的问题不清楚,我可以手动 ssh 到数据库并运行查询,我想知道你是否可以引导我找到一个示例 MySQL-PYTHON 代码来为我做这件事?包含整个连接 + 查询的东西 [示例代码] 谢谢
    • 没什么特别的,只需要在python中打开一个mysql连接就可以了。这就是 ssh 端口转发的美妙之处,它让 mysql 服务器看起来像是在本地运行。
    • 但是如何将输出定向到我的本地计算机> output.txt,输出不会存储在服务器上吗?
    • 不,您将在本地计算机上运行脚本,因此该脚本的任何输出(或输出重定向)都将在您的本地计算机上
    • 我刚刚意识到你在 Windows 上。你必须使用 PuTTY 来进行端口转发。它的工作原理是一样的,但你有那个漂亮的 GUI 可以使用。我更新了答案,为您指出如何使用 PuTTY 设置端口转发的说明 - 使用端口 3306
    猜你喜欢
    • 2016-09-08
    • 2014-09-17
    • 1970-01-01
    • 2018-10-06
    • 2014-03-21
    • 2011-02-17
    • 2015-05-15
    相关资源
    最近更新 更多