最近在处理使用跳板机转接到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。