Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我可以用Sequel Pro通过SHH连接到Mysql数据库,而不用Python?_Python_Mysql_Ssh - Fatal编程技术网

为什么我可以用Sequel Pro通过SHH连接到Mysql数据库,而不用Python?

为什么我可以用Sequel Pro通过SHH连接到Mysql数据库,而不用Python?,python,mysql,ssh,Python,Mysql,Ssh,我不明白为什么我可以通过SSH和Sequel Pro连接到Mysql数据库,但如果我用Python尝试这一点,我就无法建立连接 当我打开Sequel Pro并在框中填充以下数据时,一切正常: MySQL-Host: 127.0.0.1 User: db_username Password: db_password Database: database Port: 3306 SSH-Host: ssh_ip_adress SSH-User: ssh_user SSH-Password: ssh_

我不明白为什么我可以通过SSH和Sequel Pro连接到Mysql数据库,但如果我用Python尝试这一点,我就无法建立连接

当我打开Sequel Pro并在框中填充以下数据时,一切正常:

MySQL-Host: 127.0.0.1
User: db_username
Password: db_password
Database: database
Port: 3306

SSH-Host: ssh_ip_adress
SSH-User: ssh_user
SSH-Password: ssh_password
SSH-Port: 22 
但是当我在Python中尝试这一点时

   import pymysql
   from sshtunnel import SSHTunnelForwarder

   with SSHTunnelForwarder(
            ('ssh_ip_adress', 22),
            ssh_username="ssh_user",
            ssh_password="ssh_password",
            remote_bind_address=(127.0.0.1, 3306)
    ) as tunnel:
        port = tunnel.local_bind_port
        db_connection = pymysql.connect(
        host='ssh_ip_adress', port=port, db='database', user='db_username',
        password='db_password', charset='utf8mb4')
我收到一个错误:

sshtunnel.BaseSSHTunnelForwarderError: Could not establish session to SSH gateway

我能做什么?

ssh\u ip\u address
字面意思是“ssh\u ip\u address”,还是远程系统的ip?然后您正试图用MySQL连接到SSH IP地址…?那不行。您需要连接到本地绑定的SSH端口。我不知道为什么会失败,但是如果您觉得合适的话,您可以连接sqlalchemy。您还可以看看@deceze我应该在python代码中更改什么?ssh_ip_地址是来自远程服务器的ip地址。我没有任何关于
SSHTunnelForwarder
的第一手经验,但是想法是ssh隧道绑定了您机器上的一个本地端口,这会导致输入它的所有流量从远程机器上的MySQL端口流出。因此,您将与MySQL客户端连接到绑定的本地端口(隧道将透明地将其转发到远程MySQL)。您没有将MySQL客户端连接到远程计算机(因为这样您就完全绕过了已建立的隧道)。@deceze那么我应该使用本地绑定地址还是什么?0.0.0.0:22还是什么?