生产环境中,为了安全起见,大多数的数据库是无法在本地直接访问的,需要先连接跳板机,然后通过跳板机访问。这么做虽然在安全方面稍有保证,但是对于写代码的人来说,增加了一定的难度,以下是我个人对python连接跳板机再连接mysql的一些总结,希望能帮助到各位。

首先,需要下载sshtunnel包,使用pip即可,其次是连接MySQL的包,这个根据自己的喜好来就好,我个人常用的是mysql.connector和pymysql,这里就使用mysql.connector。

代码如下:

server = SSHTunnelForwarder(

(host_jump, int(port_jump)), # 跳板机的配置

ssh_pkey=ssh_pk_jump,

ssh_username=user_name_jump,

remote_bind_address=(host_mysql, int(port_mysql))) # 数据库服务器的配置

server.start()

conn = mysql.connector.connect(host='127.0.0.1', port=server.local_bind_port, user=user_name_mysql, password=password_mysql, database=database)

# do something...

conn.close()

server.close()说明:

1:因为我的跳板机是通过密钥连接的,所以需要ssh_pkey参数,值是密钥的路径,如果需要通过密码连接,将该参数换成ssh_password即可;

2:SSHTunnelForwarder方法返回的server对象必须调用start()方法后才可以正常使用;

3:在连接MySQL时,connect()方法的参数中的host必须为127.0.0.1;

4:由于端口必须为数字类型,所以使用int()方法转换;

5:使用结束后,为了安全起见,调用server的close()方法关闭连接,当然也可以使用with语句,如下:

with SSHTunnelForwarder(

(host_jump, int(port_jump)), # 跳板机的配置

ssh_pkey=ssh_pk_jump,

ssh_username=user_name_jump,

remote_bind_address=(host_mysql, int(port_mysql))) as server: # MySQL服务器的配置

conn = pymysql.connect(host='127.0.0.1', port=server.local_bind_port, user=user_name_mysql, password=password, database=database)此时不仅可以省略close()方法,也可以省略start()方法。

python mysql 跳板机_python通过跳板机连接MySQL相关推荐

  1. mysql connector安装教程_通过安装MySQL Connector/Net实现VS2017 C#编程连接MySQL数据库-网络教程与技术 -亦是美网络...

    对编程有一定了解的小伙伴都知道,一般情况下使用微软的visual studio进行编程开发都会搭配自家的SQL server.Access数据库,而开发web程序一般情况下PHP搭配MySQL使用,但 ...

  2. navicat远程连接mysql很慢_解决Navicat远程连接mysql很慢的方法

    ubuntu 下 /etc/mysql/mysql.conf.d [mysqld] skip-name-resolve  增加该字段即可 如果增加该字段,这无法使用本地ip进行登入, 登陆到MySql ...

  3. python测试开发django(8)--django连接mysql

    前言 Django对各种数据库提供了很好的支持,包括:PostgreSQL.MySQL.SQLite.Oracle.本篇以mysql为例简单介绍django连接mysql进行数据操作 Django连m ...

  4. python脚本字符串拼接_Python脚本分割和连接字符串

    python脚本字符串拼接 This article gives an overview of Python Script functions to split strings and string ...

  5. mysql打开网络访问权限_远程连接mysql 授权方法详解

    今在服务器上 有mysql 数据库,远程访问,不想公布root账户,所以,创建了demo账户,允许demo账户在任何地方都能访问mysql数据库中shandong库. 方案一: 在安装mysql的机器 ...

  6. php连接不到mysql怎么解决,怎么解决php无法连接mysql的问题

    解决php无法连接mysql的问题的方法:1.打开php.ini配置文件:2.修改配置[pdo_mysql.default_socket=/tmp/mysql.sock]:3.重启nginx或apac ...

  7. eclipse jdbc mysql下载_在eclipse里jdbc连接mysql 怎么安装

    纯新手,百度了好久"jdbc怎么安装""eclipsemysqljdbc"找不到教程,试着下载了mysql-connector-java-5.0.3-bin.j ...

  8. matlab 连接mysql数据库_【转】matlab 连接 mysql 数据库

    首先要安装mysql驱动程序包,详细步骤如下: Step 1: 将mysql-connector-java-5.1.7-bin.jar文件拷贝到......\MATLAB\R2009a\java\ja ...

  9. c 连接mysql怎么增删改_C++ API方式连接mysql数据库实现增删改查

    这里复制的 http://www.bitscn.com/pdb/mysql/201407/226252.html 一.环境配置 1,装好mysql,新建一个C++控制台工程(从最简单的弄起,这个会了, ...

最新文章

  1. zookeeper集群部署监控与选举同步流程等工作原理
  2. java中如何生成随机数?
  3. qgis 图片_QGIS教程09QGIS中如何制作萤火虫地图?
  4. linux apache gzip压缩,Linux入门教程:配置Apache开启gzip压缩传输,gzip压缩 LoadModul
  5. 前端面试之 判断 true == true 需要进行哪几步操作?
  6. 人员能力模型及能力培养设计
  7. Longstick的学习周记——第二周
  8. python查两个微博共同粉丝_Python:获取新浪微博用户的收听列表和粉丝列表
  9. GS企业管理软件运用
  10. 电脑无法连接WiFi(显示地球图标)
  11. MyBatis学习(二)--利用MyBatis实现CRUD操作
  12. 使用Cplex求解均值方差模型
  13. comsol如何定义狄利克雷边界_在变分问题中指定边界条件和约束
  14. Java遍历list集合转换成PDF
  15. 编程设计一个基于条件风险最小的Bayes分类器
  16. iPhone手机史上最全的扫盲帖【越狱,解锁,激活,Cydia,基带,裸机】
  17. 【Vue】Vue中mixins的使用方法及实际项目应用详解
  18. c语言求三门课程的平均成绩,C语言求三个学生四门课每个学生的平均成绩和每门课的平均成绩,并存入cx.txt中...
  19. animation unity 速度_animator下怎么控制指定动画的播放速度
  20. VMware Workstation 17 Pro的下载安装使用

热门文章

  1. 在Github上创建个人主页
  2. 超宽带铜线解决方案 - 铜线接入架构与技术
  3. 巴黎圣母院有人痛心,伊拉克博物馆有谁记得
  4. python中的goto函数_如何在 Python 中实现 goto 语句
  5. Chrome和Firefox的命令行参数
  6. 大学课程及专业课搜集
  7. xchat java,IRC 聊天工具(xchat,chatzilla,pidgin)入门教程
  8. GitHub加速插件
  9. MySQL的month()函数方法对应得Oracle方法
  10. 专访邹欣:投身软件工程教育的程序员