欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > 数据库 >内容正文

数据库

python mysql ssh隧道_在python中使用ssh隧道连接mysql

发布时间:2025/4/5 数据库 65 豆豆
生活随笔 收集整理的这篇文章主要介绍了 python mysql ssh隧道_在python中使用ssh隧道连接mysql 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

通常为了保证数据库安全,不会允许直接连接数据库,而是需要通过SSH隧道去连接服务器背后的数据库;

今天我在用Python连接远程的MySQL时,直连遇到了无法连接的情况,使用了SSH隧道之后解决了问题;

在python中使用ssh隧道连接mysql

通常在python中,我们是使用下面的代码连接MySQL的:

import pymysql

# 打开数据库连接

db = pymysql.connect("localhost","testuser","test123","TESTDB" )

依赖库PyMySQL;

安装:

pip install PyMySQL

此时直接连接可能会报错:

ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

此时,我们需要通过SSH隧道的方式进行访问!

首先使用SSH隧道需要安装依赖sshtunnel,使用pip安装即可:

pip install sshtunnel

其次,首先创建SSH隧道,然后在创建MySQL连接时,使用隧道即可:

import pymysql

from sshtunnel import SSHTunnelForwarder

server = SSHTunnelForwarder(

ssh_address_or_host=('', 22), # 指定ssh登录的跳转机的address

ssh_username='root', # 跳转机的用户

ssh_password='your_passwd', # 跳转机的密码

remote_bind_address=('', 3306))

server.start()

db = 'dbname'

myConfig = pymysql.connect(

user="root",

passwd="password",

host="127.0.0.1", # 此处必须是 127.0.0.1

db=db,

port=server.local_bind_port)

cursor =myConfig.cursor()

cursor.execute('SELECT COUNT(*) FROM table;')

print(cursor.fetchall())

server.stop()

cursor.close()

也可以使用with语句:

import pymysql

from sshtunnel import SSHTunnelForwarder

if __name__ == '__main__':

with SSHTunnelForwarder(

ssh_address_or_host=('', 22), # 指定ssh登录的跳转机的address

ssh_username='root', # 跳转机的用户

ssh_password='ZHIrensha123456', # 跳转机的密码

remote_bind_address=('', 3306)) as server:

db = 'resultdb'

myConfig = pymysql.connect(

user="root",

passwd="password",

host="127.0.0.1", # 此处必须是 127.0.0.1

db=db,

port=server.local_bind_port)

cursor =myConfig.cursor()

cursor.execute('SELECT COUNT(*) FROM table;')

print(cursor.fetchall())

cursor.close()

《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

总结

以上是生活随笔为你收集整理的python mysql ssh隧道_在python中使用ssh隧道连接mysql的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。