您当前的位置:首页 > 计算机 > 编程开发 > Python

python使用跳板机连接mysql

时间:04-18来源:作者:点击数:

今天解决了一个问题

平时都是使用python连接内网数据库

今天想在灰度进行测试,需要连接外网数据库

需要使用跳板机进行连接

直接上配置:

import sshtunnel
import pymysql

# sshtunnel.TUNNEL_TIMEOUT = 6000000

class SSH_to_Mysql:
    def ssh_mysql_conn(self):
        self.server = sshtunnel.SSHTunnelForwarder(
            ('跳板机IP', int(跳板机端口)),
            ssh_username='跳板机用户名',
            ssh_password='跳板机密码',
            remote_bind_address=('数据库IP', int(数据库端口))
        )

        self.server.start()

        # self.server.set_keepalive
        # self.server.ping(reconnect=True)

        self.conn = pymysql.connect(
            host = '127.0.0.1',
            port = self.server.local_bind_port,
            user = '数据库用户名',
            password = '数据库密码',
            # db = xxx
            charset="utf8",
            cursorclass=pymysql.cursors.DictCursor,
            autocommit=1
        )

        return self.conn

总结:

1. 我的跳板机是通过密码连接的,所以使用的是:ssh_password 如果跳板机是通过密钥连接,则需要ssh_pkey参数,值是密钥的路径

2. SSHTunnelForwarder方法返回的server对象必须调用start()方法后才可以正常使用

3. 在连接MySQL时,connect()方法的参数中的host必须为127.0.0.1

4. 由于端口必须为数字类型,所以使用int()方法转换

5. 使用结束后,为了安全起见,调用server的close()方法关闭连接,当然也可以使用with语句,此时不仅可以省略close()方法,也可以省略start()方法

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门