在有ssh情况下使用python链接到mysql

最近在处理使用跳板机转接到mysql 的时候有些问题,解决方法如下
首先需要手动安装一个sshtunnel

import pymysql
from sshtunnel import SSHTunnelForwarder
with SSHTunnelForwarder(

        ('100.40.233.8' ,类似3306的端口),#ip地址,
        ssh_password='跳板机密码',
        ssh_username='用户名',
        remote_bind_address=('内网链接', 3306)) as server:
    print('SSH连接成功')
    conn = pymysql.connect(host='127.0.0.1',
                           port=server.local_bind_port,
                           user='库用户名',
                           passwd='库密码',
                           database='链接的数据库名',
                           charset='utf8')
    print('mysql数据库连接成功')

import pymysql
from sshtunnel import SSHTunnelForwarder


with SSHTunnelForwarder(

        ('121.40.226.98', 14573),
        ssh_password='zbdBNDjeerA_K9as4r',
        ssh_username='jr7466',
        remote_bind_address=('rr-bp1615s91e7flckz4.mysql.rds.aliyuncs.com', 3306)) as server:
    print('SSH连接成功')
    conn = pymysql.connect(host='127.0.0.1',
                           port=server.local_bind_port,
                           user='jr7466',
                           passwd='wZsY9k1X2qj8M',
                           database='jinr_sys_v',
                           charset='utf8')
    print('mysql数据库连接成功')
server.start()

#下面部分是将数据读入pd的语法
from sqlalchemy import create_engine
engine2 = create_engine(
    'mysql+pymysql://数据库账号(例如lc5555):数据库密码@127.0.0.1:%s/数据库名?charset=utf8' % server.local_bind_port)


import pandas as pd 
sql = 'select * from tabel limit 10'
df = pd.read_sql(sql,engine2)

上面的代码可以使得在有ssh加密的情况下链接到mysql。

猜你喜欢

转载自blog.csdn.net/lisenby/article/details/115111825