当前位置:脚本大全 > > 正文

pythonssh登录服务器(对python 通过ssh访问数据库的实例详解)

时间:2022-01-26 01:49:44类别:脚本大全

pythonssh登录服务器

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

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

通过pymysql连接mysql:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 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框架:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 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访问数据库的实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持开心学习网。

    原文链接:https://blog.csdn.net/u011318721/article/details/79310947

    标签:
    上一篇下一篇

    猜您喜欢

    热门推荐