python如何通过跳板机连接MySQL

首先需要进行以下准备工作:

  1. 需要有一台安装了 Python 环境的机器,并安装 MySQL 的 Python 库;
  2. 需要有一个跳板机和一个 MySQL 数据库服务器,可以通过 SSH 连接上跳板机。

下面是 Python 通过跳板机连接 MySQL 数据库的步骤:

  1. 导入必要的库
import pymysql
import paramiko
  1. 配置跳板机和目标服务器信息
jump_host = 'jump_host_ip'
jump_port = 22
jump_user = 'jump_username'
jump_password = 'jump_password'
db_host = 'db_host_ip'
db_port = 3306
db_user = 'db_username'
db_password = 'db_password'
  1. 创建 SSH Client 和 SSH Transport,连接到跳板机,并获取到一个 SSH Channel
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(jump_host, jump_port, jump_user, jump_password)
transport = ssh.get_transport()
channel = transport.open_channel('direct-tcpip', (db_host, db_port), ('localhost', 0))
  1. 创建 MySQL 连接并连接数据库
database = pymysql.connect(host=db_host, port=db_port, user=db_user, password=db_password, db='database_name', charset='utf8', cursorclass=pymysql.cursors.DictCursor, conv=pymysql.converters.conversions)

这里需要注意的是,需要将连接主机设置为「localhost」,端口设置为「0」,因为已经通过 SSH 隧道连接到了目标数据库服务器,即主机地址和端口号转发到了跳板机。

  1. 完成操作后断开连接
transport.close()
ssh.close()

示例一:

假设跳板机地址为 192.168.1.10,MySQL 服务器地址为 192.168.1.20,账号密码为 root/root,数据库名为 testdb。

import pymysql
import paramiko

jump_host = '192.168.1.10'
jump_port = 22
jump_user = 'root'
jump_password = 'jump_password'
db_host = '192.168.1.20'
db_port = 3306
db_user = 'root'
db_password = 'db_password'

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(jump_host, jump_port, jump_user, jump_password)
transport = ssh.get_transport()
channel = transport.open_channel('direct-tcpip', (db_host, db_port), ('localhost', 0))

database = pymysql.connect(host='localhost', port=0, user=db_user, password=db_password, db='testdb', charset='utf8', cursorclass=pymysql.cursors.DictCursor, conv=pymysql.converters.conversions)
cursor = database.cursor()
cursor.execute("show databases")
result = cursor.fetchall()
print(result)

transport.close()
ssh.close()

执行结果为:

[{'Database': 'information_schema'}, {'Database': 'mysql'}, {'Database': 'performance_schema'}, {'Database': 'sys'}, {'Database': 'testdb'}]

示例二:

假设跳板机地址为 192.168.1.10,MySQL 服务器地址为 192.168.1.30,账号密码为 root/root,数据库名为 testdb2。

import pymysql
import paramiko

jump_host = '192.168.1.10'
jump_port = 22
jump_user = 'root'
jump_password = 'jump_password'
db_host = '192.168.1.30'
db_port = 3306
db_user = 'root'
db_password = 'db_password'

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(jump_host, jump_port, jump_user, jump_password)
transport = ssh.get_transport()
channel = transport.open_channel('direct-tcpip', (db_host, db_port), ('localhost', 0))

database = pymysql.connect(host='localhost', port=0, user=db_user, password=db_password, db='testdb2', charset='utf8', cursorclass=pymysql.cursors.DictCursor, conv=pymysql.converters.conversions)
cursor = database.cursor()
cursor.execute("show tables")
result = cursor.fetchall()
print(result)

transport.close()
ssh.close()

执行结果为:

[{'Tables_in_testdb2': 'user'}, {'Tables_in_testdb2': 'post'}, {'Tables_in_testdb2': 'comment'}]

通过代码示例可以看到,使用 Python 通过跳板机连接到 MySQL 数据库十分简单,只需要借助 paramiko 库即可。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python如何通过跳板机连接MySQL - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • Python 复平面绘图实例

    先来简单介绍一下“Python 复平面绘图实例”。 Python 复平面绘图实例是一个可以让你在 Python 中使用复平面绘制图像的工具。复平面在数学中是一个非常重要的概念,它可以用来描述复数,也可以用来描述复变函数的性质。通过使用 Python 复平面绘图实例,你可以更加直观地了解复平面的性质,也可以更好地理解复数和复变函数。 下面,我将详细讲解“Pyt…

    python 2023年6月3日
    00
  • python 修改本地网络配置的方法

    Python 修改本地网络配置的方法 在Python中,我们使用socket库来获取和设置本地网络配置信息。本地网络配置信息包括接口、IP地址、子网掩码、广播地址、MAC地址和DNS服务器地址等。下面是使用Python修改本地网络配置的详细攻略。 步骤 1 : 导入 socket 库 导入 socket 库,该库包含用于访问和设置本地网络配置信息的函数。 i…

    python 2023年5月20日
    00
  • 手把手教你Windows如何在cmd中切换python版本

    请跟我一步步来! 1. 首先确定Python版本 在cmd中输入python –version(注意是两个短横线),可以查看当前使用的Python版本。假设当前Python版本为Python 3.8.5。 2. 查看已安装的所有Python版本 打开cmd,并在命令行输入以下内容: where python 这个命令将列出在计算机上安装的所有Python版…

    python 2023年5月18日
    00
  • 如何把python项目部署到linux服务器

    部署Python项目到Linux服务器的过程可以分成以下几个步骤: 准备Linux服务器环境: 在Linux服务器上安装Python和所需依赖包,并设置好相应的环境变量,以便后续能够正常运行项目。 准备Python项目文件: 将Python项目文件打包成压缩文件(通常使用.tar.gz或.zip格式),并上传到Linux服务器上。 解压项目文件: 在Linu…

    python 2023年6月3日
    00
  • 解决Python logging模块无法正常输出日志的问题

    解决Python logging模块无法正常输出日志的问题 Python的logging模块是一个非常强大的日志记录工具,可以帮助我们记录应用程序的运行状态和信息。但是,在logging模块,有时会遇到无法正常输出日志的问题。本文将介绍如何解决Python logging模块无法正常输出日志的问题。 问题描述 在Python logging模块时,有时会遇到…

    python 2023年5月14日
    00
  • springboot publish event 事件机制demo分享

    标题:SpringBoot事件机制的示例分享 简介 Spring框架是一个非常流行的Java框架,其提供了事件机制来处理应用程序中的各种操作,SpringBoot是Spring的一个子框架,继承了Spring框架的事件机制,使得事件的处理更加简单和高效。 SpringBoot事件机制简介 SpringBoot事件机制允许应用程序中的不同组件之间进行通信。核心…

    python 2023年6月13日
    00
  • Pycharm IDE的安装和使用教程详解

    Pycharm IDE的安装和使用教程详解 Pycharm是什么? Pycharm是一款Python集成开发环境,提供了丰富的开发功能和调试工具,广泛使用于Python开发者中。Pycharm支持Python 2和Python 3版本,并提供了许多插件和第三方工具支持。 安装Pycharm 下载Pycharm安装包 Pycharm官网地址为:https://…

    python 2023年5月19日
    00
  • 在Python中使用NumPy生成具有给定复数根的切比雪夫级数

    在Python中使用NumPy生成具有给定复数根的切比雪夫级数,需要遵循以下步骤: 第一步:导入必要的库 import numpy as np import matplotlib.pyplot as plt 第二步:定义函数 定义函数,生成切比雪夫级数,并返回其值。 def chebyshev_series(coeffs, x): ""&…

    python-answer 2023年3月25日
    00
合作推广
合作推广
分享本页
返回顶部