对python 通过ssh访问数据库的实例详解


Posted in Python onFebruary 19, 2019

通常,为了安全性,数据库只允许通过ssh来访问。例如:mysql数据库放在服务器A上,只允许数据库B来访问,这时,我们需要用机器C去访问数据库,就需要用C通过ssh连接B,再访问A。

通过pymysql连接mysql:

import pymysql
from sshtunnel import SSHTunnelForwarder

with SSHTunnelForwarder(
  (sshServerB_ip, sshServerB_port), # B机器的配置
  ssh_password=sshServerB_pwd,
  ssh_username=sshServerB_usr,
  remote_bind_address=(databaseA_ip, databaseA_port)) as server: # A机器的配置

 db_connect = pymysql.connect(host='127.0.0.1', # 此处必须是是127.0.0.1
         port=server.local_bind_port,
         user=databaseA_usr,
         passwd=databaseA_pwd,
         db=databaseA_db)

 cur = db_connect.cursor()
 cur.execute('call storedProcedure')
 db_connect.commit()

以下是自己进行事务管理,并使用peewee框架:

from peewee import *
from playhouse.db_url import connect
from sshtunnel import SSHTunnelForwarder

server = SSHTunnelForwarder(
  (sshServerB_ip, sshServerB_port), # B机器的配置
  ssh_password=sshServerB_pwd,
  ssh_username=sshServerB_usr,
  remote_bind_address=(databaseA_ip, databaseA_port)) # A机器的配置
server.start()
destination_lib = connect('mysql://%s:%s@127.0.0.1:%d/%s' % (databaseA_usr, databaseA_pwd, server.local_bind_port, databaseA_db))
'''
your code to operate the databaseA
'''
server.close()

以上这篇对python 通过ssh访问数据库的实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python操作Elasticsearch数据索引的教程
Apr 08 Python
python实现简单点对点(p2p)聊天
Sep 13 Python
让Python更加充分的使用Sqlite3
Dec 11 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
May 15 Python
5分钟 Pipenv 上手指南
Dec 20 Python
python 整数越界问题详解
Jun 27 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
Jul 03 Python
Python3中urlencode和urldecode的用法详解
Jul 23 Python
Django 开发环境与生产环境的区分详解
Jul 26 Python
详解python中groupby函数通俗易懂
May 14 Python
Python魔术方法专题
Jun 19 Python
Django多数据库联用实现方法解析
Nov 12 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
Feb 19 #Python
深入理解Django-Signals信号量
Feb 19 #Python
python利用跳板机ssh远程连接redis的方法
Feb 19 #Python
Python获取Redis所有Key以及内容的方法
Feb 19 #Python
Python元组常见操作示例
Feb 19 #Python
python redis 删除key脚本的实例
Feb 19 #Python
Python列表切片操作实例总结
Feb 19 #Python
You might like
php中设置index.php文件为只读的方法
2013/02/06 PHP
php 判断服务器操作系统的类型
2014/02/17 PHP
php动态变量定义及使用
2015/06/10 PHP
yii2.0实现pathinfo的形式访问的配置方法
2016/04/06 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
2017/10/11 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
javascript操作文本框readOnly
2007/05/15 Javascript
用ASP将SQL搜索出来的内容导出为TXT的代码
2007/07/27 Javascript
表单元素的submit()方法和onsubmit事件应用概述
2013/02/01 Javascript
javascript实现框架高度随内容改变的方法
2015/07/23 Javascript
轻松掌握JavaScript中的Math object数学对象
2016/05/26 Javascript
jQuery多级联动下拉插件chained用法示例
2016/08/20 Javascript
基于AngularJS实现iOS8自带的计算器
2016/09/12 Javascript
清除js缓存的多种方法总结
2016/12/09 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
Vux+Axios拦截器增加loading的问题及实现方法
2018/11/08 Javascript
JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例
2018/12/14 Javascript
vue实现按钮切换图片
2021/01/20 Vue.js
[07:54]DOTA2-DPC中国联赛 正赛 iG vs VG 选手采访
2021/03/11 DOTA
python实现2048小游戏
2015/03/30 Python
Django发送html邮件的方法
2015/05/26 Python
简单解决Python文件中文编码问题
2015/11/22 Python
Python教程之全局变量用法
2016/06/27 Python
Django基础之Model操作步骤(介绍)
2017/05/27 Python
基于python时间处理方法(详解)
2017/08/14 Python
python绘制立方体的方法
2018/07/02 Python
python 判断linux进程,并杀死进程的实现方法
2019/07/01 Python
Python基于内置库pytesseract实现图片验证码识别功能
2020/02/24 Python
Python模块相关知识点小结
2020/03/09 Python
python统计mysql数据量变化并调用接口告警的示例代码
2020/09/21 Python
巴西购物网站:Estrela10
2018/12/13 全球购物
社区工作者思想汇报
2014/01/13 职场文书
委托书如何写
2014/08/30 职场文书
入党现实表现材料
2014/12/23 职场文书