python如何通过跳板机连接MySQL

yizhihongxing

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

  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日

相关文章

  • ptyhon实现sitemap生成示例

    下面就来详细讲解一下“Python实现Sitemap生成示例”的完整攻略。 1. Sitemap是什么 Sitemap即网站地图,是指展示网站结构的一种文件。它可以让搜索引擎更好地了解网站的页面结构,从而更快地收录网站内容。 2. Python实现Sitemap生成的基本步骤 Python实现Sitemap生成的基本步骤如下: 安装所需的依赖包:lxml、b…

    python 2023年6月3日
    00
  • 如何在python中正确使用函数及其语法?

    【问题标题】:How to properly use a function and it’s syntax in python?如何在python中正确使用函数及其语法? 【发布时间】:2023-04-04 20:01:01 【问题描述】: 目前我正在开发一个基本的文本游戏,您可以选择与狼战斗的武器,从字典中驱动谁的健康,您可以选择的武器的统计数据也是如此。…

    Python开发 2023年4月6日
    00
  • Python list去重且保持原顺序不变的方法

    在Python中,我们可以使用多种方法对列表进行去重操作。其中,最常用的方法是使用set()函数将列表转换为集合,然后再将集合转换回列表。这种方法可以去除列表中的重复元素但是会改变列表中元素的顺序。如果我们需要保持列表中元素的原始顺序不变,可以使用以下两种方法: 方法一:使用OrderedDict 我们可以使用collections模块中的OrderedDi…

    python 2023年5月13日
    00
  • python通过ssh-powershell监控windows的方法

    下面是详细的“Python通过SSH-PowerShell监控Windows”的攻略。 1. 安装必要的工具 在开始之前,我们需要安装一些必要的工具,包括SSH客户端、PowerShell、和Python的Paramiko、PyPSUtil模块。SSH客户端我们这里选择OpenSSH,这是一个开源的SSH客户端,可在Windows上安装和使用。PowerSh…

    python 2023年6月3日
    00
  • python开发中两个list之间传值示例

    以下是详细讲解“Python开发中两个List之间传值示例”的完整攻略。 在Python开发中,有时需要将一个List的值传递给另一个List。本文将介绍两种方法来实现这个目标,并提供两个示例说明。 方法一:使用切片 可以使用切片来将一个List的值传递给另一个List。例如: lst1 = [1, 2, 3] lst2 = lst1[:] print(ls…

    python 2023年5月13日
    00
  • python中使用正则表达式的方法详解

    Python中使用正则表达式的方法详解 正则表达式是一种用于描述字符串模式的语言,它可以用于匹配、查找、替换和割字符串。Python中的re模块提供了对正则表达式的支持,可以方便进行字符串的处理。本文将详细讲解Python中使用正则表达式的方法,包括正则表达式的语法、re模块的常用函数以及两个常用的匹配实例。 正则表达式语法 正则表达式由一些特殊字符和普通字…

    python 2023年5月14日
    00
  • Python利用openpyxl库遍历Sheet的实例

    下面是Python利用openpyxl库遍历Sheet的实例的完整实例教程: 环境准备 在使用openpyxl库之前,需要确保已经安装了该库。可以使用pip install openpyxl命令来安装它。 打开Excel文件 我们可以使用openpyxl库来打开一个Excel文件,从而遍历其中的Sheet。打开文件的方法是load_workbook()。具体…

    python 2023年5月13日
    00
  • 使用Python下载歌词并嵌入歌曲文件中的实现代码

    我将细致讲解如何使用Python下载歌词并嵌入歌曲文件中的实现代码。该攻略包含以下步骤: 下载歌曲文件 下载歌词文件 解析歌词文件 将歌词嵌入歌曲文件 保存嵌入歌词的歌曲文件 步骤一 下载歌曲文件 我们可以使用Python的requests库来下载歌曲文件。代码示例: import requests url = ‘http://music.163.com/s…

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