Python根据ssh远程桌面连接Mysql数据库操作实例详细说明
我是本际云服务器推荐网的小编小本本,今天给大家介绍一个Python根据ssh远程桌面连接Mysql数据库的操作实例,有需要的小伙伴可以参考借鉴一下,希望对大家有帮助。

环境
如果想要浏览虚拟服务器的Mysql数据库系统,但是该Mysql数据库系统为了安全起见,将安全保护措施设为只可宽带连接,即需要验证到该台网络服务器才能进行,别的远程桌面连接是不能够访问外网,而且对应的端口号都做了修改。这时就需要根据ssh来连接该数据库系统。这种方法和在Navicat里面进行页面化根据ssh联接相同。
连接数据库服务器
如果想连接Mysql,首先需要组装pymysql
pip install pymysql
然后需要组装根据ssh的库sshtunnel:
pip install sshtunnel #现阶段全新0.3.1版
建议使用最新版本的sshtunnel库,旧版库也有一些bug。
根据ssh联接Mysql
根据ssh联接Mysql可以查询sshtunnel的文本文档,里面也有一些实例。
with SSHTunnelForwarder(
('192.168.1.1', 2222),
ssh_password='123456',
ssh_username='root',
remote_bind_address=('127.0.0.1', 3306)) as server:
print('SSH配对成功')
conn = pymysql.connect(host='127.0.0.1',
port=server.local_bind_port,
user='root',
database='data',
charset='utf8')
print('mysql数据库服务器取得成功')
cursor = conn.cursor()
...#获取数据操作,此处省略
cursor.close()
conn.close()
自定义查询函数
可以对上面的联接进行封装形成一个函数,方便其他地方调用。
def mysql_ssh(sql, args=None):
with SSHTunnelForwarder(
('192.168.1.1', 2222),
ssh_password='123456',
ssh_username='root',
remote_bind_address=('127.0.0.1', 3306)) as server:
print('SSH配对成功')
conn = pymysql.connect(host='127.0.0.1',
port=server.local_bind_port,
user='root',
database='data',
charset='utf8')
print('mysql数据库服务器取得成功')
cursor = conn.cursor()
print('游标卡尺获得取得成功')
try:
print(f'执行查询语句:{sql},主要参数:{args}')
cursor.execute(sql, args)
print('数据查询取得成功')
conn.commit()
print('事务提交成功')
datas = cursor.fetchall()
success = True
except:
print('数据查询失败')
datas = None
success = False
print('正在关闭数据库服务器')
cursor.close()
conn.close()
return datas, success
注意事项:
- 在操作数据库时,conn.commit()、cursor.close()、conn.close()这种必须要正确使用,避免出现不必要的bug。
- 调用方法时建议采用cursor.execute(sql,args)的方法,避免SQL注入的风险。
综上所述,这篇文章就到这里了,希望对大家有所帮助。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/5770.html
