python mysql ssh隧道_在python中使用ssh隧道连接mysql
通常为了保证数据库安全,不会允许直接连接数据库,而是需要通过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相关推荐
- jmeter连接mysql数据库驱动_十八、JMeter实战-JDBC连接MySQL数据库
前言 连接数据库进行测试在工作中会比较常用,首先可以读取数据库的数据进行参数化.关联等,批量添加测试数据以及清理数据,还可以直接对SQL语句进行压测. 一.基本介绍 1. 首先第一步要导入mysql驱 ...
- IDEA中使用Java语言连接MySQL,实现增、删、查操作
IDEA中使用Java语言连接MySQL,实现增.删.查操作 连接条件 想要连接MySQL数据库首先需要一个mysql-connector-java-8.0.25.jar包 [官网下载](MySQL ...
- python字符串去掉空行_从python中的字符串中删除空格
python字符串去掉空行 如何在python中删除字符串中的空格 (How to remove whitespaces in a string in python) str.lstrip()str. ...
- python 打印数组变量_使用Python将数组的元素导出到变量中(unpacking)
下面就为大家分享一篇使用Python将数组的元素导出到变量中(unpacking),具有很好的参考价值,希望对大家有所帮助.一起过来看看吧 最近工作中遇到一个问题,需要利用Python将数组(list ...
- python之禅 中文_《Python之禅》中对于Python编程过程中的一些建议
<Python之禅>中对于Python编程过程中的一些建议 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: <Python之禅>中对于Pyt ...
- python写一个ssh工具_用Python写个自动ssh登录远程服务器的小工具
很多时候我们喜欢在自己电脑的终端直接ssh连接Linux服务器,而不喜欢使用那些有UI界面的工具区连接我们的服务器.可是在终端使用ssh我们每次都需要输入账号和密码,这也是一个烦恼,所以我们可以简单的 ...
- python安装sql模块_在Python安装MySQL支持模块的方法
刚安装Python的MySQL支持库,一口气遇到了一连串的问题,好在Google一下,均解决.遂记录下,备忘. 1.下载Python的MySQL支持库 地址:http://sourceforge.ne ...
- python如何收集数据库_利用Python操作mysql数据库
本文主要讲解如何利用python中的pymysql库来对mysql数据库进行操作 大家在转行项目中也可以加入这一步操作,提高逼格的同时还能简化流程 正文开始: 先看一下最常见的操作:从数据库中sele ...
- python数组相减_对Python 中矩阵或者数组相减的法则详解
对Python 中矩阵或者数组相减的法则详解 最近在做编程练习,发现有些结果的值与答案相差较大,通过分析比较得出结论,大概过程如下: 定义了一个计算损失的函数: def error(yhat,labe ...
最新文章
- JSBing-js自动绑定C++
- 【原创】如何找回source insight context window?(作者:gooogleman)
- java调用js查询mongo_MongoDB增删查改操作示例【基于JavaScript Shell】
- Spring源码分析-从源码看BeanFactory和FactoryBean的区别
- django 1.8 官方文档翻译:13-1-3 密码管理
- mysql 日志抓取变化_MySQL慢查询日志分析提取【转】
- np.random.RandomState、np.random.rand、np.random.random、np.random_sample
- Java 异常处理 之 运行期异常
- 一篇文章简单入门SpringCloud服务网关
- Adaptive调度器
- java计算机毕业设计公立医院绩效考核系统源码+mysql数据库+系统+lw文档+部署
- JAVA实现图片加水印及Base64图片字符串加水印
- 节点操作之父子节点和下拉框
- pycharm 安装及设置
- 【开发教程1】疯壳·ARM功能手机-开发板上电教程
- java计算机毕业设计H5女娲宫旅游网站设计与实现MyBatis+系统+LW文档+源码+调试部署
- ORA-39126: Worker unexpected fatal error in KUPW$WORKER.FETCH_XML_OBJECTS [ORA-04063: view “SYS.KU$_
- Automated pulmonary nodule detection in CT images using deep convolutional neural networks
- W5-2465X参数 至强W5-2465X功耗
- (附源码)计算机毕业设计ssm电影售票管理系统