《python》paramiko+paramiko实现远程通过ssh通道连接数据库

阿丹:

        在一些特定的场景下面,需要使用线上的数据库。但是正常使用连接肯定是连接不上的,所以这里就需要使用ssh通道来连接线上的数据库。

pip install paramiko pymysql

下面是示例代码:

import paramiko
import pymysql# SSH隧道配置
ssh_host = 'your_ssh_server_ip'
ssh_port = 22
ssh_user = 'your_ssh_username'
ssh_password = 'your_ssh_password'# MySQL数据库配置
mysql_host = 'your_mysql_host_or_ip'  # 这里填写MySQL的实际地址,如果通过SSH隧道访问localhost即可
mysql_port = 3306
mysql_user = 'your_mysql_username'
mysql_password = 'your_mysql_password'
mysql_db = 'your_database_name'def create_ssh_tunnel(ssh_host, ssh_port, ssh_user, ssh_password, remote_bind_address, local_bind_port):"""创建SSH隧道"""transport = paramiko.Transport((ssh_host, ssh_port))transport.connect(username=ssh_user, password=ssh_password)# 设置转发规则,将本地端口转发到远程MySQL服务器channel = transport.open_channel("direct-tcpip", (remote_bind_address, mysql_port), ('', local_bind_port))return channeldef query_mysql_via_tunnel(mysql_user, mysql_password, mysql_db, local_bind_port):"""通过SSH隧道连接MySQL并执行查询"""conn = pymysql.connect(host='127.0.0.1', port=local_bind_port, user=mysql_user, passwd=mysql_password, db=mysql_db)try:with conn.cursor() as cursor:cursor.execute('SELECT VERSION()')result = cursor.fetchone()print("MySQL version:", result)finally:conn.close()if __name__ == "__main__":# 创建SSH隧道local_bind_port = 3307  # 选择一个未被占用的本地端口tunnel = create_ssh_tunnel(ssh_host, ssh_port, ssh_user, ssh_password, (mysql_host, mysql_port), local_bind_port)try:# 通过隧道连接MySQL并执行查询query_mysql_via_tunnel(mysql_user, mysql_password, mysql_db, local_bind_port)finally:# 关闭SSH连接tunnel.close()

请注意,需要将上述代码中的your_ssh_server_ipyour_ssh_usernameyour_ssh_passwordyour_mysql_host_or_ipyour_mysql_usernameyour_mysql_password以及your_database_name替换为实际的值。此外,确保你有权限通过SSH访问目标服务器,并且MySQL服务器允许来自SSH服务器的连接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/856172.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最实战的GLM4微调入门:从文本分类开始

GLM4是清华智谱团队最近开源的大语言模型。 以GLM4作为基座大模型,通过指令微调的方式做高精度文本分类,是学习LLM微调的入门任务。 使用的9B模型,显存要求相对较高,需要40GB左右。 在本文中,我们会使用 GLM4-9b-Chat…

【自然语言处理】人工智能应用篇——文本生成

文本生成是指使用自然语言处理技术,基于给定的上下文或主题自动生成人类可读的文本。这种技术可以应用于各种领域,如自动写作、聊天机器人、新闻生成、广告文案创作等。 一、文本生成技术的核心要素包括: 1. 预训练模型 概述:预…

全志 Android 11:实现响应全局按键

一、篇头 最近实现热键想功能,简单总结了下全志平台Android 11 的响应全局热键的方法。 二、需求 实现全局热键,响应F-、AF、F三个按键,AF只用于启动调焦界面,F-和F除了可以启动调焦界面外,还用于调整镜头的焦距&…

Go web框架|Beego、Gin、Echo、Iris等干货教程

Go 是一门正在快速增长的编程语言,专为构建简单、快速且可靠的软件而设计。golang提供的net/http库已经很好了,对于http的协议的实现非常好,基于此再造框架,也不会是难事,因此生态中出现了很多框架。 本篇文章主要介绍…

使用node把任意网站封装为可执行文件

直接上步骤: 1. node.js 环境准备 下载地址 那个版本都行,下一步->下一步 安装即可 2. windows 系统下, 快捷键 winr ->输入 cmd -> 回车 3. 执行第一个命令,安装 nativefier 等一段时间 npm install nativefier -g 4…

【顺序表】01 删除最小元素

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux算法题上机准备 😘欢迎 ❤️关注 👍点赞 🙌收藏 ✍️留言 文章目录 题目算法思路题解 题目 从顺序表中删除具有最小值的元素( 假设唯一) 并由函数返回被…

icon转svg处理

一般情况下,图标我们可以找UI或者去iconfont.cn获得一个svg格式的文件。然后再IDE中以文本的方式打开,然后格式化,就可以看到代码。代码中一般是最外层一个svg标签,里面是一个或者多个path。这个时候,我们使用h方法来实…

全面赋能,永久免费!讯飞星火API能力正式免费开放

2023年5月,讯飞星火正式发布,迅速成为千万用户获取知识、学习知识的“超级助手”,成为解放生产力、释放想象力的“超级杠杆”。 2024年5月,讯飞星火API能力正式免费开放,携手生态开发者加快大模型赋能刚需场景。 领…

【考研408计算机组成原理】存储系统之Cache考点

苏泽 “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家 另外,利用了工作之余的一点点时间,整理了一套考研408的知识图谱, 我根据这一套知识图谱打造了这样一个408知识图谱问答系统 里面的每一…

【C++题解】1324 - 扩建鱼塘问题

问题:1324 - 扩建鱼塘问题 类型:分支问题 题目描述: 有一个尺寸为 mn 的矩形鱼塘,请问如果要把该鱼塘扩建为正方形,那么它的面积至少增加了多少平方米? 输入: 两个整数 m 和 n 。 输出&…

计算机原理概述

计算机的基本原理可以分为几个主要部分:硬件结构、软件系统以及两者的交互。以下是计算机原理的简要概述: 1. 计算机硬件结构 1.1. 中央处理器(CPU) CPU 是计算机的核心部件,负责执行指令。它由以下几部分组成&…

LeetCode 54.螺旋矩阵

1.题目要求如图所示: 各位看官们,大家好呀,今天小编用的方法比较麻烦,就是按顺时针遍历,但也挺好理解的,因为就是迭代法循环,所以就不给大家讲步骤了,直接就发代码了: /*** Note: The returne…

深入浅出Netty:高性能网络应用框架的原理与实践

深入浅出Netty:高性能网络应用框架的原理与实践 1. Netty简介 Netty是一个基于Java的异步事件驱动的网络应用框架,广泛用于构建高性能、高可扩展性的网络服务器和客户端。它提供对多种协议(如TCP、UDP、SSL等)的支持,…

群晖虚拟化创建存储池失败问题解决

环境信息: 虚拟化版本:VMware ESXi, 7.0.3, 19482537 群晖版本:DS3615xs DSM版本:DSM 7.0.1-42218 前提是已经装好了系统,可以通过web正常访问群晖的服务界面,但可以识别到硬盘但是无法创建存储池。 报错…

【计算机网络篇】数据链路层(11)在数据链路层扩展以太网

文章目录 🍔使用网桥在数据链路层扩展以太网🥚网桥的主要结构和基本工作原理🎈网桥的主要结构🔎网桥转发帧的例子🔎网桥丢弃帧的例子🔎网桥转发广播帧的例子 🥚透明网桥🔎透明网桥的…

网络基础篇:网络模型

目录 一、初识网络 二、网络的分层 OSI七层模型 TCP/IP四层模型 网络与系统的关系 网络传输基本流程 数据包封装和分用 三、IP地址与MAC地址 认识IP地址 认识MAC地址 IP与MAC的关系 一、初识网络 同一台设备上的进程间通信有很多种方式 : 管道&#xff08…

量化交易策略:ATR与ADTM指标的多因子策略

哈喽,大家好,我是木头左! 今天,将深入探讨两个重要的技术指标:ATR和ADTM。这两个指标在多因子策略中发挥着关键作用,可以帮助更好地理解市场动态,优化投资组合。 ATR指标:真实波动…

微信小程序学习(七):自定义组件和通信

1、基本知识 开发中常见的组件主要分为 公共组件 和 页面组件 两种,因此注册组件的方式也分为两种: 全局注册:在 app.json 文件中配置 usingComponents 节点进行引用声明,注册后可在任意组件使用局部注册:在页面.jso…

需求虽小但是问题很多,浅谈JavaScript导出excel文件

最近我在进行一些前端小开发,遇到了一个小需求:我想要将数据导出到 Excel 文件,并希望能够封装成一个函数来实现。这个函数需要接收一个二维数组作为参数,数组的第一行是表头。在导出的过程中,要能够确保避免出现中文乱…

二叉树(数据结构篇)

数据结构之二叉树 二叉树 概念: 二叉树(binary tree)是一颗每个节点都不能多于两个子节点的树,左边的子树称为左子树,右边的子树称为右子树 性质: 二叉树实际上是图,二叉树相对于树更常用。 平衡二叉树的深度要比…