如何在python3中利用ssh隧道对mysql进行连接

  介绍

今天就跟大家聊聊有关如何在python3中利用ssh隧道对mysql进行连接,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

具体方法如下:

进口pymysql
  从sshtunnel进口SSHTunnelForwarder
  进口pymysql。游标#以dict形式输出
  
  def dbconnect_ssh (ssh_host ssh_port密钥文件,ssh_user, db_host, db_name, sql, db_port, db_user, db_passwd):
  SSHTunnelForwarder (
  (ssh_host ssh_port),
  # ssh_password=皊shpasswd",
  ssh_pkey=密钥文件,
  ssh_username=ssh_user,
  remote_bind_address=(db_host db_port)
  )服务器:
  
  db=pymysql.connect (
  主机=& # 39;127.0.0.1 # 39;=server.local_bind_port港
  用户=db_user,
  passwd=db_passwd,
  db=db_name,
  charset=皍tf8",
  cursorclass=pymysql.cursors.DictCursor)
  
  光标=db.cursor ()
  
  试一试:
  cursor.execute (sql)
  data=cursor.fetchall ()
  db.commit ()
  除了:
  db.rollback ()
  
  收集=[]
  结果的数据:
  collect.append(结果)
  
  db.close ()
  cursor.close ()
  
  返回收集
  
  if __name__==癬_main__":
  ssh_host=?0.10.2.13"# SSH服务器地址
  ssh_port=22 # SSH端口
  密钥文件=xxxx.key"# SSH密钥
  ssh_user=皉oot"# SSH用户名
  db_host=?27.0.0.1"#数据库地址
  db_name=& # 39; dbname # 39;#数据库名
  sql=& # 39;显示表;& # 39;# SQL
  db_port=3306 #数据库端口
  db_user=& # 39;根# 39;#数据库用户名
  db_passwd=& # 39; 33333 & # 39;#数据库密码
  密钥文件,结果=dbconnect_ssh (ssh_host ssh_port ssh_user, db_host, db_name, sql, db_port, db_user, db_passwd)
  print(结果)

<强> Python使用SSHTunnel连接内网mysql数据库

<强>准备:

主要模块SSHTunnel, pip安装SSHTunnel

其余模块pymysql,剧场,configparser

<强>简介:

这里用的是数据库连接池和自动的链接断开重连机制,其实最主要的就是sshtunner的建立,所以可以只看服务建立的部分

<强>配置文件:

(mysql)   数据库=ad_insight   max_connections=10   stale_timeout=1000   主机=localhost   用户=数据库用户名   密码=数据库密码   端口=3306

python代码

。池进口PooledMySQLDatabase
  从剧场。快捷方式进口ReconnectMixin
  从configparser进口configparser
  从sshtunnel进口SSHTunnelForwarder
  
  类RetryMySQLDatabase (ReconnectMixin PooledMySQLDatabase):
  _instance=没有
  
  @staticmethod
  def get_db_instance ():
  如果不是RetryMySQLDatabase._instance:
  服务器=SSHTunnelForwarder (
  ssh_address_or_host=& # 39; ssh域名或者地址& # 39;,
  ssh_port=ssh端口,
  ssh_password=& # 39; ssh密码& # 39;,
  ssh_username=& # 39; ssh名称& # 39;,
  remote_bind_address=(& # 39;数据库地址& # 39;,数据库端口)
  
  )
  server.start ()
  配置=ConfigParser ()
  config.read (“。/default.cfg"编码=皍tf-8")
  RetryMySQLDatabase。_instance=RetryMySQLDatabase (
  str(配置[& # 39;mysql # 39;][& # 39;数据库# 39;]),
  max_connections=int(配置[& # 39;mysql # 39;] [& # 39; max_connections # 39;]),
  stale_timeout=int(配置[& # 39;mysql # 39;] [& # 39; stale_timeout& # 39;]),
  主机=str(配置[& # 39;mysql # 39;][& # 39;主机# 39;]),
  用户=str(配置[& # 39;mysql # 39;][& # 39;用户# 39;]),
  密码=str(配置[& # 39;mysql # 39;][& # 39;密码# 39;]),
  端口=server.local_bind_port
  #端口=int(配置[& # 39;mysql # 39;][& # 39;港口# 39;])
  )
  返回RetryMySQLDatabase._instance 

其实主要是在服务器对象的建立和服务器。开始

看完上述内容,你们对如何在python3中利用ssh隧道对mysql进行连接有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

如何在python3中利用ssh隧道对mysql进行连接