python - 如何在 python 中通过 ssh 连接到 mysql localhost?
问题描述
我正在尝试在 python 上使用 ssh 连接到 localhost mysql 上的数据库。使用终端和 PyChar 的数据源,连接到数据库。
with SSHTunnelForwarder(
(ssh_host, ssh_port),
ssh_username=ssh_user,
ssh_password=ssh_pass,
remote_bind_address=('127.0.0.1', 3306),
logger=create_logger(loglevel=1)) as tunnel:
with pymysql.connect(host='127.0.0.1',
user=db_user,
passwd=db_pass,
db=db_name,
port=tunnel.local_bind_port) as connection:
print("!!!!!!!!!CONNECTED!!!!!!!!!!!")
output = connection.execute("select * from BD.b_catalog limit 1")
print(output)
我正在尝试使用 SSHTunnelForwarder 进行连接,但没有任何结果。我看不到带有连接消息的珍贵印刷品。
记录仪:
2020-10-09 17:19:39,977| WAR | MainThrea/0964@sshtunnel | Could not read SSH configuration file: ~/.ssh/config
2020-10-09 17:19:39,977| INF | MainThrea/0992@sshtunnel | 0 keys loaded from agent
2020-10-09 17:19:39,977| INF | MainThrea/1040@sshtunnel | 0 keys loaded from host directory
2020-10-09 17:19:39,977| INF | MainThrea/0910@sshtunnel | Connecting to gateway: 83.220.172.208:22 as user 'root'
2020-10-09 17:19:39,977| DEB | MainThrea/0915@sshtunnel | Concurrent connections allowed: True
2020-10-09 17:19:39,977| DEB | MainThrea/1367@sshtunnel | Trying to log in with password: *************
2020-10-09 17:19:40,155| INF | Srv-38583/1386@sshtunnel | Opening tunnel: 0.0.0.0:38583 <> 127.0.0.1:3306
2020-10-09 17:19:41,160| TRA | Thread-3/0349@sshtunnel | #1 <-- ('127.0.0.1', 58390) to ('127.0.0.1', 3306) was rejected by the SSH server
2020-10-09 17:19:41,160| ERR | Thread-3/0384@sshtunnel | Could not establish connection from ('127.0.0.1', 38583) to remote side of the tunnel
2020-10-09 17:19:41,160| INF | MainThrea/1407@sshtunnel | Shutting down tunnel ('0.0.0.0', 38583)
2020-10-09 17:19:41,221| WAR | Thread-1/1819@transport | Success for unrequested channel! [??]
2020-10-09 17:19:41,260| INF | Srv-38583/1392@sshtunnel | Tunnel: 0.0.0.0:38583 <> 127.0.0.1:3306 released
2020-10-09 17:19:41,260| DEB | MainThrea/1421@sshtunnel | Transport is closed
和错误信息:
...
packet_header = self._read_bytes(4)
File "/home/kvando/PycharmProjects/py_scrapy/venv/lib/python3.8/site-packages/pymysql/connections.py", line 698, in _read_bytes
raise err.OperationalError(
pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query')
解决方案
推荐阅读
- java - 调试 SelectionSort 方法的问题
- python - 如何将 Dialogflow 与 Django python 集成并使用 RESTful API?
- android - Social.localUser.Authenticate 回调从未被调用
- angular - cdk virtualscroll with mat-grid-list
- java - 将复杂的“字符串”转换为“布尔”
- xml - 创建表形式学说 orm.xml 文件
- cdi - TransactionImpleManager.suspend 隐式调用
- php - 为什么我的带有分页参数的 WordPress ajax 调用响应总是给我第一页?
- r - 过滤 difftime 在 5 天内的日期
- javascript - 是否在用 jQuery 替换 HTML 时执行任何脚本