python sshtunnel 没有启动给定凭据的服务器
python sshtunnel not starting server given credentials
所以我试图让 mysql-connector-python
与 sshtunnel
一起工作
with SSHTunnelForwarder(('192.168.0.1', 22), ssh_username='pi', ssh_password='*********', remote_bind_address=('localhost', 3306)) as tunnel:
tunnel.start()
mydb = mysql.connector.connect(host="localhost",
user='Mashu',
password='*******',
port=tunnel.local_bind_port,
db='mysql')
print(mydb)
cur = mydb.cursor()
cur.execute('USE mysql')
print(cur.execute('SELECT * FROM user'))
它似乎执行得很顺利,但是当我想创建游标时它说
mysql.connector.errors.OperationalError: MySQL Connection not available.
我进一步调查,发现连接到本地绑定的值,所以local_bind_address
、local_bind_host
等都设置为错误,说:
Server is not started. Please .start() first!
尽管我的代码中确实有 tunnel.start()
我确实检查过,我的服务器对其他程序可见(f.e.DataGrip),我不知道问题出在哪里。
您正在使用带有 with SSHTunnelForwarder
的上下文管理器,这意味着它将在退出作用域时关闭连接。将 cur = mydb.cursor
放入上下文管理器范围内即可解决问题。
所以我试图让 mysql-connector-python
与 sshtunnel
with SSHTunnelForwarder(('192.168.0.1', 22), ssh_username='pi', ssh_password='*********', remote_bind_address=('localhost', 3306)) as tunnel:
tunnel.start()
mydb = mysql.connector.connect(host="localhost",
user='Mashu',
password='*******',
port=tunnel.local_bind_port,
db='mysql')
print(mydb)
cur = mydb.cursor()
cur.execute('USE mysql')
print(cur.execute('SELECT * FROM user'))
它似乎执行得很顺利,但是当我想创建游标时它说
mysql.connector.errors.OperationalError: MySQL Connection not available.
我进一步调查,发现连接到本地绑定的值,所以local_bind_address
、local_bind_host
等都设置为错误,说:
Server is not started. Please .start() first!
尽管我的代码中确实有 tunnel.start()
我确实检查过,我的服务器对其他程序可见(f.e.DataGrip),我不知道问题出在哪里。
您正在使用带有 with SSHTunnelForwarder
的上下文管理器,这意味着它将在退出作用域时关闭连接。将 cur = mydb.cursor
放入上下文管理器范围内即可解决问题。