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.如果密码中有‘\’,切记一定要用‘\\’进行转义!!!

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

猜你喜欢

转载自blog.csdn.net/weixin_42575020/article/details/125785078
今日推荐