通常为了保证数据库安全,不会允许直接连接数据库,而是需要通过SSH隧道去连接服务器背后的数据库;

今天我在用Python连接远程的MySQL时,直连遇到了无法连接的情况,使用了SSH隧道之后解决了问题;

在python中使用ssh隧道连接mysql

通常在python中,我们是使用下面的代码连接MySQL的:

import pymysql

# 打开数据库连接

db = pymysql.connect("localhost","testuser","test123","TESTDB" )

依赖库PyMySQL;

安装:

pip install PyMySQL

此时直接连接可能会报错:

ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

此时,我们需要通过SSH隧道的方式进行访问!

首先使用SSH隧道需要安装依赖sshtunnel,使用pip安装即可:

pip install sshtunnel

其次,首先创建SSH隧道,然后在创建MySQL连接时,使用隧道即可:

import pymysql

from sshtunnel import SSHTunnelForwarder

server = SSHTunnelForwarder(

ssh_address_or_host=('', 22), # 指定ssh登录的跳转机的address

ssh_username='root', # 跳转机的用户

ssh_password='your_passwd', # 跳转机的密码

remote_bind_address=('', 3306))

server.start()

db = 'dbname'

myConfig = pymysql.connect(

user="root",

passwd="password",

host="127.0.0.1", # 此处必须是 127.0.0.1

db=db,

port=server.local_bind_port)

cursor =myConfig.cursor()

cursor.execute('SELECT COUNT(*) FROM table;')

print(cursor.fetchall())

server.stop()

cursor.close()

也可以使用with语句:

import pymysql

from sshtunnel import SSHTunnelForwarder

if __name__ == '__main__':

with SSHTunnelForwarder(

ssh_address_or_host=('', 22), # 指定ssh登录的跳转机的address

ssh_username='root', # 跳转机的用户

ssh_password='ZHIrensha123456', # 跳转机的密码

remote_bind_address=('', 3306)) as server:

db = 'resultdb'

myConfig = pymysql.connect(

user="root",

passwd="password",

host="127.0.0.1", # 此处必须是 127.0.0.1

db=db,

port=server.local_bind_port)

cursor =myConfig.cursor()

cursor.execute('SELECT COUNT(*) FROM table;')

print(cursor.fetchall())

cursor.close()

python mysql ssh隧道_在python中使用ssh隧道连接mysql相关推荐

  1. jmeter连接mysql数据库驱动_十八、JMeter实战-JDBC连接MySQL数据库

    前言 连接数据库进行测试在工作中会比较常用,首先可以读取数据库的数据进行参数化.关联等,批量添加测试数据以及清理数据,还可以直接对SQL语句进行压测. 一.基本介绍 1. 首先第一步要导入mysql驱 ...

  2. IDEA中使用Java语言连接MySQL,实现增、删、查操作

    IDEA中使用Java语言连接MySQL,实现增.删.查操作 连接条件 想要连接MySQL数据库首先需要一个mysql-connector-java-8.0.25.jar包 [官网下载](MySQL ...

  3. python字符串去掉空行_从python中的字符串中删除空格

    python字符串去掉空行 如何在python中删除字符串中的空格 (How to remove whitespaces in a string in python) str.lstrip()str. ...

  4. python 打印数组变量_使用Python将数组的元素导出到变量中(unpacking)

    下面就为大家分享一篇使用Python将数组的元素导出到变量中(unpacking),具有很好的参考价值,希望对大家有所帮助.一起过来看看吧 最近工作中遇到一个问题,需要利用Python将数组(list ...

  5. python之禅 中文_《Python之禅》中对于Python编程过程中的一些建议

    <Python之禅>中对于Python编程过程中的一些建议 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  <Python之禅>中对于Pyt ...

  6. python写一个ssh工具_用Python写个自动ssh登录远程服务器的小工具

    很多时候我们喜欢在自己电脑的终端直接ssh连接Linux服务器,而不喜欢使用那些有UI界面的工具区连接我们的服务器.可是在终端使用ssh我们每次都需要输入账号和密码,这也是一个烦恼,所以我们可以简单的 ...

  7. python安装sql模块_在Python安装MySQL支持模块的方法

    刚安装Python的MySQL支持库,一口气遇到了一连串的问题,好在Google一下,均解决.遂记录下,备忘. 1.下载Python的MySQL支持库 地址:http://sourceforge.ne ...

  8. python如何收集数据库_利用Python操作mysql数据库

    本文主要讲解如何利用python中的pymysql库来对mysql数据库进行操作 大家在转行项目中也可以加入这一步操作,提高逼格的同时还能简化流程 正文开始: 先看一下最常见的操作:从数据库中sele ...

  9. python数组相减_对Python 中矩阵或者数组相减的法则详解

    对Python 中矩阵或者数组相减的法则详解 最近在做编程练习,发现有些结果的值与答案相差较大,通过分析比较得出结论,大概过程如下: 定义了一个计算损失的函数: def error(yhat,labe ...

最新文章

  1. JSBing-js自动绑定C++
  2. 【原创】如何找回source insight context window?(作者:gooogleman)
  3. java调用js查询mongo_MongoDB增删查改操作示例【基于JavaScript Shell】
  4. Spring源码分析-从源码看BeanFactory和FactoryBean的区别
  5. django 1.8 官方文档翻译:13-1-3 密码管理
  6. mysql 日志抓取变化_MySQL慢查询日志分析提取【转】
  7. np.random.RandomState、np.random.rand、np.random.random、np.random_sample
  8. Java 异常处理 之 运行期异常
  9. 一篇文章简单入门SpringCloud服务网关
  10. Adaptive调度器
  11. java计算机毕业设计公立医院绩效考核系统源码+mysql数据库+系统+lw文档+部署
  12. JAVA实现图片加水印及Base64图片字符串加水印
  13. 节点操作之父子节点和下拉框
  14. pycharm 安装及设置
  15. 【开发教程1】疯壳·ARM功能手机-开发板上电教程
  16. java计算机毕业设计H5女娲宫旅游网站设计与实现MyBatis+系统+LW文档+源码+调试部署
  17. ORA-39126: Worker unexpected fatal error in KUPW$WORKER.FETCH_XML_OBJECTS [ORA-04063: view “SYS.KU$_
  18. Automated pulmonary nodule detection in CT images using deep convolutional neural networks
  19. W5-2465X参数 至强W5-2465X功耗
  20. (附源码)计算机毕业设计ssm电影售票管理系统

热门文章

  1. python函数式编程思想_以python为例,浅谈函数式编程思想
  2. 取消项目git_git取消文件跟踪
  3. 小小串联电阻,大大的作用。常见串联电阻情况分类整理汇总
  4. 数据结构-js实现栈和队列
  5. Hibernate用Mysql数据库时链接关闭异常的解决
  6. 自动化部署shell01
  7. 浅析x86架构中cache的组织结构
  8. win8桌面壁纸路径
  9. Linux 增大Swap
  10. Linux环境手动创建oracle10g数据库实践