与MySQL的远程SSH连接未在端口3306上监听

我正在尝试将Tableau连接到我在pythonanywhere.com上托管的SQL数据库,但是它无法正常工作,我相信原因是我与pythonanywhere.com的远程连接没有进程监听端口3306。事实上,我认为它正在被积极地杀死,但是我不确定那是真的。

现在,我在Windows 10计算机上,并通过git bash通过以下方式进行连接:

 ssh -L 3306:jonathanbechtel.mysql.pythonanywhere-services.com:3306 jonathanbechtel@ssh.pythonanywhere.com

执行完此操作后,我运行命令netstat -an 并看到以下内容:

与MySQL的远程SSH连接未在端口3306上监听

我的理解是,TIME_WAIT状态意味着某些内容在本地终止了连接。

我的理解是,我需要具有本地地址127.0.0.1:3306并处于LISTENING状态,以便我可以将隧道用作与其他任何对象的连接。

我还在jupyter笔记本中以及通过MySQL工作台从外部连接到该数据库,因此我知道它可以以某种方式完成。

但是我不知道为什么在这种情况下连接被终止。

命令telnet 127.0.0.1 3306表示连接有效:

与MySQL的远程SSH连接未在端口3306上监听

更新:

问题是,当我尝试通过Tableau连接到PuTTY连接时,出现以下错误消息:

[MySQL][ODBC 8.0(w) Driver]access denied for user 'myusername'@'localhost' (using password: YES)

无效的用户名或密码。

但是,如果我运行以下python代码,则可以连接:

import mysql.connector
import sshtunnel

sshtunnel.SSH_TIMEOUT = 5.0
sshtunnel.TUNNEL_TIMEOUT = 5.0

with sshtunnel.SSHTunnelForwarder(
 ('ssh.pythonanywhere.com'),ssh_username=info['username'],ssh_password=info['password'],remote_bind_address=(info['db_address'],3306)
) as tunnel:
  connection = mysql.connector.connect(
    user=info['username'],password=info['db_password'],host=info['ssh_address'],port=tunnel.local_bind_port,database=info['db_name'],)
df = pd.read_sql_query('SELECT * FROM classes',connection)
connection.close()
yuagqian 回答:与MySQL的远程SSH连接未在端口3306上监听

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3133995.html

大家都在问