python利用跳转机(ssh)链接 mysql数据库

背景: 很多时候我们在链接数据库时都会遇到用跳转机链接数据库的场景,本文将记录一下改如何操作。

首先安装sshtunnel模块,如果是在anaconda中用pip进行安装的话,可能会报错,如下:

ERROR: Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问

解决办法pip install sshtunnel 后面加上–user 接下来说一下如何链接数据库:

server =sshtunnel.SSHTunnelForwarder(
        (*********,22),#作为跳转机的ip和端口
        ssh_username=***,#跳转机的用户名
        ssh_password=********,#对应的密码
        remote_bind_address=(***********,3306),#数据库的IP地址和端口
       # local_bind_address=(127.0.0.1, 3306)#端口可以自己设置,没有冲突即可,不加这个参数也可
)
server.start()
conn=pymysql.connect(host=127.0.0.1,# 必须为本机回环地址,原因会在下面写出
                     port=server.local_bind_port,
                     user=***,数据库用户名
                     password=***********,#数据库密码
                     # charset=utf-8,#编码方式
                     database=*****#要查询的database)
cursor=conn.cursor()
sql=select * from z_test where id=17962
cursor.execute(sql)
conn.commit()
print(cursor.fetchall())

总结一下: 上述链接分为两部分,一、链接作为跳转机的服务器,并建立跳转机和目标数据库的远程访问。二、在跳转机的基础上通过数据库相关的各种参数访问数据库。 以上就是python ssh链接数据库的相关代码和步骤,另外还有一些需要注意的点:

1.写端口号的时候切记不要加引号!!!
2.最上面的那个连接信息一定是服务器的,不是数据库的!!!
3.绑定的本地端口号不一定非要是13306,只要没有端口冲突都行!!!
4.如果密码中有‘’,切记一定要用‘\’进行转义!!!

上述中出现不准确表述,欢迎留言讨论!

经验分享 程序员 微信小程序 职场和发展