在日常工作中,为了保证线上服务的稳定和数据安全,想要访问线上数据库通常需要先通过跳板机进入内网才可以登录数据库,虽然这样可以保证数据安全,但对于我们日常调试程序却带来不便。于是,我特意封装了一个通过ssh访问远程MySQL数据库的方法供大家参考。
不搞虚了吧唧的,直接上源码:
import time
import pymysql
from sshtunnel import SSHTunnelForwarder
from pyhive import presto, hive
from impala.dbapi import connect
import paramiko
def create_tunnel(HOST, PORT):
# 创建ssh通道
server = SSHTunnelForwarder(
ssh_address_or_host=('000.000.000.000', 22),
ssh_username='xxxx',
ssh_password='xxxxxxxx',
local_bind_address=('127.0.0.1', 12449),
remote_bind_address=(HOST, PORT)
)
return server
def connect_db(HOST, PORT, user, password, db, table):
# 连接MySQL数据库
server = create_tunnel(HOST, PORT)
server.start()
# 开启通道
db = pymysql.connect(
host='127.0.0.1',
port=12449,