我试过其他问题的解决方法,但没有一个对我有效。我试图通过设置ssh隧道从运行在远程服务器上的mysql数据库中提取数据。我的代码如下:
server = sshtunnel.SSHTunnelForwarder(
('10.6.41.10', 22),
ssh_username= 'serveruser',
ssh_password= 'serverpw',
remote_bind_address=('127.0.0.1', 3306))
server.start()
print(server.local_bind_port)
cnx = mysql.connector.connect(user='root', password='mysqlpw',
host='127.0.0.1',
database='mydb',
charset='utf8',
use_unicode='FALSE',
port = 3306)
但是,当我运行此代码时,我收到:
^{pr2}$我也试着增加
local_bind_address = ('0.0.0.0', 3306)
到sshtunnel设置程序,而不是接收
Problem setting SSH Forwarder up: Couldn't open tunnel 0.0.0.0:3306 <> 127.0.0.1:3306 might be in use or destination not reachable
我不完全理解远程绑定地址和本地绑定地址,所以我猜这肯定是有问题。我知道我的用户名/pw/server信息是正确的,我可以通过终端ssh进入我的服务器,然后使用
mysql -h 127.0.0.1 -u root -p
成功登录mysql服务器。那么我需要做些什么来让它在python中运行呢?谢谢。在
如果不在
sshtunnel.SSHTunnelForwarder
中指定local_bind_address
,则本地端口将随机分配。在这种情况下,在mysql.connector.connect()
中设置port=server.local_bind_port
。在相反,您也可以在
sshtunnel.SSHTunnelForwarder
中设置local_bind_address=('0.0.0.0', [some port which is not in use])
。sshtunnel.HandlerSSHTunnelForwarderError
(“问题设置…”)告诉您不能使用local_bind_address=('0.0.0.0', 3306)
。在相关问题 更多 >
编程相关推荐