【问题标题】:Python connecting to MySQL Server through SSH tunnelingPython 通过 SSH 隧道连接到 MySQL 服务器
【发布时间】:2020-09-30 05:47:32
【问题描述】:

您好,我需要远程连接到我的家庭服务器上托管的 SQL 数据库的帮助。我可以使用终端正常连接,但是当我尝试使用 pycharm 时出现以下错误:

我收到“远程地址不允许使用 Unix 域套接字”错误。 我不确定应该为 Remote_server 和 Private_server 以及最后一个主机 = ip 放置哪些地址。如果有人可以帮助提供一些启发,那将是非常棒的,谢谢!

这是我的代码: import mysql.connector import sshtunnel

with sshtunnel.SSHTunnelForwarder( ('REMOTE_SERVERIP', 3306), ssh_username='darren', ssh_password='darren', remote_bind_address=('xxxxxxx'), local_bind_address=('0.0.0.0') ) as tunnel: connection = mysql.connector.connect( user='darren', password='darren', host='xxxxxxx', database='SalesFindr', port=3306)

【问题讨论】:

  • 如果您连接到localhost:3306,大多数 MySQL 实现使用本地 UNIX 套接字而不是端口。尝试映射到不同的端口。

标签: python mysql mysql-connector ssh-tunnel


【解决方案1】:

根据文档,remote_bind_address() 必须是一个由 IP 地址和端口组成的元组

remote_bind_address(元组): 格式为 (str, int) 的远程元组表示 隧道远端的IP和端口。

我们可以只为 local_bind_address 将“端口”参数留空。

local_bind_address(元组): 格式为 (str, int) 的本地元组表示 隧道本地端的IP和端口。这两个元素在 元组是可选的,所以('', 8000)('10.0.0.1', ) 是有效值

       Default: ``('0.0.0.0', RANDOM_PORT)``

所以,在您的代码中,尝试remote_bind_address=('xxxxxxx', 27018)(或任何可用端口代替 27018)

【讨论】:

    猜你喜欢
    • 2014-03-21
    • 2019-08-01
    • 2019-11-12
    • 2012-06-21
    • 2016-11-18
    • 2018-10-06
    • 1970-01-01
    相关资源
    最近更新 更多