1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

Python根据ssh远程桌面连接Mysql数据库操作

Python根据ssh远程桌面连接Mysql数据库操作实例详细说明

我是本际云服务器推荐网的小编小本本,今天给大家介绍一个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