百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

干货:Python3隧道连接MySQL数据库

off999 2024-10-12 06:15 58 浏览 0 评论

有些时候,出于数据安全的考量,我们会对某些数据库的访问权限做一些限制,比如说我们可能会仅提供给某几台内网机器数据库访问权限,这时这几台机器就在我们数据库的IP白名单中,这些IP之外的机器均无法访问我们的数据库。

数据安全得到了保障,但是我们进行一些本地开发的时候可能会不太方便。尤其是出于稳定性考虑,服务器的软件版本往往较为落后,且软件丰富程度、可定制程度都无法跟本地相提并论。在数据探索阶段,我们往往更倾向于使用本地更新、更强大、更丰富的软件包来完成任务。

我们今天的目标就是在本地通过隧道的方式登录有IP限制的MySQL数据库。

这种方法的原理很简单,就是我们需要一台在IP白名单中的机器的登录用户名及密码,这样我们就可以伪装成这一台机器来访问数据库的数据,并将数据取回本地进行使用。

接下来开始我们的尝试。


一、安装依赖

我们需要用到pymysql和sshtunnel两个库来实现隧道连接MySQL数据库。pymysql用于实现MySQL数据库操作,sshtunnel则用于构建隧道对象。当然,也存在其他替代的库,大家可以自行搜索安装,我们今天所有的演示均使用这两个库。

# dain @ DAINdeMacBook-Pro in ~ [14:59:30]
$ pip install pymysql sshtunnel
Requirement already satisfied: pymysql in ./anaconda3/lib/python3.6/site-packages (0.9.2)
Requirement already satisfied: sshtunnel in ./anaconda3/lib/python3.6/site-packages (0.1.4)
Requirement already satisfied: cryptography in ./anaconda3/lib/python3.6/site-packages (from pymysql) (2.2.1)
Requirement already satisfied: paramiko>=1.15.2 in ./anaconda3/lib/python3.6/site-packages (from sshtunnel) (2.4.2)
Requirement already satisfied: idna>=2.1 in ./anaconda3/lib/python3.6/site-packages (from cryptography->pymysql) (2.7)
Requirement already satisfied: asn1crypto>=0.21.0 in ./anaconda3/lib/python3.6/site-packages (from cryptography->pymysql) (0.24.0)
Requirement already satisfied: six>=1.4.1 in ./anaconda3/lib/python3.6/site-packages (from cryptography->pymysql) (1.11.0)
Requirement already satisfied: cffi>=1.7 in ./anaconda3/lib/python3.6/site-packages (from cryptography->pymysql) (1.11.5)
Requirement already satisfied: pyasn1>=0.1.7 in ./anaconda3/lib/python3.6/site-packages (from paramiko>=1.15.2->sshtunnel) (0.4.4)
Requirement already satisfied: pynacl>=1.0.1 in ./anaconda3/lib/python3.6/site-packages (from paramiko>=1.15.2->sshtunnel) (1.3.0)
Requirement already satisfied: bcrypt>=3.1.3 in ./anaconda3/lib/python3.6/site-packages (from paramiko>=1.15.2->sshtunnel) (3.1.4)
Requirement already satisfied: pycparser in ./anaconda3/lib/python3.6/site-packages (from cffi>=1.7->cryptography->pymysql) (2.18)

由于我已经安装了这两个库,所以跟你看到的提示可能不太一样。

二、构建隧道连接对象

server = SSHTunnelForwarder(
 ssh_address_or_host = ('隧道机器IP', 22),
 ssh_username = '隧道机器用户名',
 ssh_password = '隧道机器密码',
 remote_bind_address = ('数据库地址', 3306)
)
# 启动隧道服务
server.start()

三、配置数据库登录信息

mysql_config = {
 'user': '数据库用户名',
 'passwd': '数据库密码',
 'host': '127.0.0.1', 
 'port': server.local_bind_port,
 'db': 'Database名字'
}

这里需要注意的地方是,我们要将host和port部分调整为本地的监听端口。我们上述配置的server隧道对象有一个local_bind_port属性,它告诉我们它在本地的哪一个端口监听,所有发送到这一端口的请求都会被他自动通过隧道机器访问。

四、开始连接

# 连接数据库
connect = pymysql.connect(**mysql_config)
cursor = conn.cursor()
# 查询并打印数据
cursor.execute('SELECT * FROM testdb.testtable LIMIT 10')
print(cursor.fetchall())

好了,这样我们就成功实现了本地访问有IP限制的MySQL数据库,开始我们的数据探索吧。

相关推荐

腾达路由器手机端登录入口(腾达路由器手机端登录入口在哪)

腾达路由器使用192.168.0.1或tendawifi.com作为登录地址。登录管理员页面的步骤:1、手机连接到腾达路由器的wifi信号;2、在手机上打开浏览器,在地址栏输入192.168.0.1后...

百度网盘app下载安装手机版(百度网盘app安卓版)
百度网盘app下载安装手机版(百度网盘app安卓版)

百度网盘没有关闭离线下载功能,可以通过以下方法进行离线下载:1、打开手机,找到手机中的百度网盘:2、打开百度网盘,找到右下角的“我的”,找到屏幕中的“离线下载”:3、点击打开离线下载,选择“新建链接任务”,然后点击“确定”:4、在新建链接页...

2025-12-21 03:51 off999

自己配台式电脑怎么配(自己配台式电脑怎么配显卡)
  • 自己配台式电脑怎么配(自己配台式电脑怎么配显卡)
  • 自己配台式电脑怎么配(自己配台式电脑怎么配显卡)
  • 自己配台式电脑怎么配(自己配台式电脑怎么配显卡)
  • 自己配台式电脑怎么配(自己配台式电脑怎么配显卡)
安卓虚拟机破解版(挽念虚拟机15.0破解版)

正盗版都是广联达公司内部出来的,破解の用来打市场,正版的用来获取利润,个人破不了1、确保你的虚拟机网路设置正确。2、如果采用的是独立无线网卡那么要确保独立网卡能被虚拟机识别,虚拟机安装了独立无线网卡...

win7系统改中文(win7系统换中文)

要将Windows7系统从英文切换为中文,可以按照以下步骤进行:1.打开控制面板:点击Windows开始菜单,选择“控制面板”。2.打开区域和语言设置:在控制面板中,找到“时钟、语言和区域”或“...

win10启动盘怎么制作(windows10如何制作启动盘)

要制作Win10PE启动盘,首先需要下载Win10PE镜像文件。然后,使用专业的制作工具(如Rufus或WinToUSB)将镜像文件写入U盘或DVD。接下来,将U盘或DVD插入需要启动的计算机,并在B...

磁盘分区win7(磁盘分区win r)

1操作分区比较简单,但需要严格按照步骤进行,否则可能会导致数据丢失或无法启动等问题。2首先要进入磁盘管理界面,找到新安装的硬盘,右键选择“新建简单卷”,按照步骤设置分区大小、驱动器号、文件系统等。...

win10专业版永久激活工具免费
  • win10专业版永久激活工具免费
  • win10专业版永久激活工具免费
  • win10专业版永久激活工具免费
  • win10专业版永久激活工具免费
cad2007破解版安装序列号(cad破解版的序列号)

1安装过程中可能会出现一些常见错误。例如,安装程序无法启动、安装程序突然中止或无法完成、安装后无法启动CAD等。2这些错误的原因可能是由于系统环境不符合要求,或者是由于安装程序本身出现问题。3为...

windows7旗舰版安装密钥(win7安装密钥和激活密钥)

一、在线获取激活密钥1、访问官方网站:打开浏览器,访问微软官方网站。2、注册账号:如果没有微软账号,需要先注册一个账号。3、登录账号:使用注册的账号登录微软官方网站。4、获取密钥:在官方网站上找到wi...

vmware下载哪个版本(vmware各版本下载)

vmos能运行原神。VMOS(虚拟大师)是一款以VirtualMachine(简称VM,即虚拟机)技术为主的APP(安卓应用软件)。通过VM技术,把开源的安卓系统(支持任意版本),无需root,以普...

在哪下载win7系统比较可靠(去哪下载win7)

靠谱,系统之家的系统装好后不需要激活,也不要钱。只是系统之家的所有东西,系统也好,软件也好。都有强有力的写在系统底层的顽固病毒,只要碰过系统之家就永远杀不干净。当然了,永远关不掉的广告弹窗也是基本操作...

一般家庭宽带用多少兆为最佳

这个要根据实际情况来确定,一般情况下,家庭宽带有50兆、100兆及200兆。如果是三口之家,平时也就看看电视,或刷刷手机,50兆的就够了。如果人口多,面积为四室二厅的房子,同时有人看电视有人玩游戏,有...

电脑配置太高装不了win7(电脑配置太高装不了win7怎么办)

如果是这样,那就不要安装Win7了,安装Win10即可。原因如下:1、win10系统是一个大势所趋。新的事物,你必须要接触、要熟悉,虽然目前还可以暂时回避,但是几年后呢,win7必然会像xp一样退出历...

移动硬盘读取不出来(移动硬盘读取不出来了,怎么拿数据)

1、移动硬盘插入电脑,选择计算机,选择左侧“此电脑”,点击右击。2、选择“管理”点击,进入计算机管理;选择磁盘“磁盘管理”。3、如没有看到移动硬盘,可以选择右边的更多操作,重新扫描磁盘。4、如依然没有...

取消回复欢迎 发表评论: