python mysql 跳板机_python通过跳板机连接MySQL
生产环境中,为了安全起见,大多数的数据库是无法在本地直接访问的,需要先连接跳板机,然后通过跳板机访问。这么做虽然在安全方面稍有保证,但是对于写代码的人来说,增加了一定的难度,以下是我个人对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相关推荐
- mysql connector安装教程_通过安装MySQL Connector/Net实现VS2017 C#编程连接MySQL数据库-网络教程与技术
-亦是美网络...
对编程有一定了解的小伙伴都知道,一般情况下使用微软的visual studio进行编程开发都会搭配自家的SQL server.Access数据库,而开发web程序一般情况下PHP搭配MySQL使用,但 ...
- navicat远程连接mysql很慢_解决Navicat远程连接mysql很慢的方法
ubuntu 下 /etc/mysql/mysql.conf.d [mysqld] skip-name-resolve 增加该字段即可 如果增加该字段,这无法使用本地ip进行登入, 登陆到MySql ...
- python测试开发django(8)--django连接mysql
前言 Django对各种数据库提供了很好的支持,包括:PostgreSQL.MySQL.SQLite.Oracle.本篇以mysql为例简单介绍django连接mysql进行数据操作 Django连m ...
- python脚本字符串拼接_Python脚本分割和连接字符串
python脚本字符串拼接 This article gives an overview of Python Script functions to split strings and string ...
- mysql打开网络访问权限_远程连接mysql 授权方法详解
今在服务器上 有mysql 数据库,远程访问,不想公布root账户,所以,创建了demo账户,允许demo账户在任何地方都能访问mysql数据库中shandong库. 方案一: 在安装mysql的机器 ...
- php连接不到mysql怎么解决,怎么解决php无法连接mysql的问题
解决php无法连接mysql的问题的方法:1.打开php.ini配置文件:2.修改配置[pdo_mysql.default_socket=/tmp/mysql.sock]:3.重启nginx或apac ...
- eclipse jdbc mysql下载_在eclipse里jdbc连接mysql 怎么安装
纯新手,百度了好久"jdbc怎么安装""eclipsemysqljdbc"找不到教程,试着下载了mysql-connector-java-5.0.3-bin.j ...
- matlab 连接mysql数据库_【转】matlab 连接 mysql 数据库
首先要安装mysql驱动程序包,详细步骤如下: Step 1: 将mysql-connector-java-5.1.7-bin.jar文件拷贝到......\MATLAB\R2009a\java\ja ...
- c 连接mysql怎么增删改_C++ API方式连接mysql数据库实现增删改查
这里复制的 http://www.bitscn.com/pdb/mysql/201407/226252.html 一.环境配置 1,装好mysql,新建一个C++控制台工程(从最简单的弄起,这个会了, ...
最新文章
- zookeeper集群部署监控与选举同步流程等工作原理
- java中如何生成随机数?
- qgis 图片_QGIS教程09QGIS中如何制作萤火虫地图?
- linux apache gzip压缩,Linux入门教程:配置Apache开启gzip压缩传输,gzip压缩
LoadModul
- 前端面试之 判断 true == true 需要进行哪几步操作?
- 人员能力模型及能力培养设计
- Longstick的学习周记——第二周
- python查两个微博共同粉丝_Python:获取新浪微博用户的收听列表和粉丝列表
- GS企业管理软件运用
- 电脑无法连接WiFi(显示地球图标)
- MyBatis学习(二)--利用MyBatis实现CRUD操作
- 使用Cplex求解均值方差模型
- comsol如何定义狄利克雷边界_在变分问题中指定边界条件和约束
- Java遍历list集合转换成PDF
- 编程设计一个基于条件风险最小的Bayes分类器
- iPhone手机史上最全的扫盲帖【越狱,解锁,激活,Cydia,基带,裸机】
- 【Vue】Vue中mixins的使用方法及实际项目应用详解
- c语言求三门课程的平均成绩,C语言求三个学生四门课每个学生的平均成绩和每门课的平均成绩,并存入cx.txt中...
- animation unity 速度_animator下怎么控制指定动画的播放速度
- VMware Workstation 17 Pro的下载安装使用