python公网连接阿里云mongo服务器

背景:

  公司使用阿里云的云数据库MongoDB。基于安全原因考虑,阿里云MongoDB云数据库目前只支持从阿里云ECS上访问,无法通过公网直接访问,不方便用户在本地开发环境里直接进行测试。

  阿里云官方推荐使用rinetd搭建跳板系统,实现公网访问云mongo。使用过程中,发现,python程序在使用过程中如果没有正确释放连接,即使python程序退出后,该mongo连接仍然被rinetd占用。曾出现调用该地址的python程序全部退出后,rinetd仍占用100多个连接,导致云mongo可用连接数不足。此时,需要重启rinetd方可释放被占用的连接。

  最终使用本机ssh连接阿里云ECS,再从该主机使用私网连接到mongo的方法,实现云mongo公网访问。这种方法可以使开发环境中的robomongo连接到mongo。

python连接云mongo:

  1 依赖

python -m pip install sshtunnel==0.1.2

  2 demo

 1 # -*- coding:utf-8 -*-
 2 from __future__ import unicode_literals
 3
 4 import pymongo
 5 from sshtunnel import SSHTunnelForwarder
 6
 7
 8 def get_aliyun_mongo_client(only_read=True):
 9     # 跳板机参数
10     ecs_host = "<ecs ip>"
11     ecs_user = "<ecs user>"
12     ecs_password = "<ecs password>"
13
14     # 云mongo 配置
15     aliyun_mongo_master_host = "<mongo 副本集 主服务器>"
16     aliyun_mongo_slave_host = "<mongo 副本集 副本>"
17     aliyun_mongo_database = "<mongo 数据库>"
18     aliyun_mongo_account = "<mongo 账号>"
19     aliyun_mongo_password = "<mongo 密码>"
20
21     host = aliyun_mongo_slave_host if only_read else aliyun_mongo_master_host
22     server = SSHTunnelForwarder(
23         (ecs_host, 22),
24         ssh_password=ecs_password,
25         ssh_username=ecs_user,
26         remote_bind_address=(host, 3717))
27
28     server.start()
29
30     client = pymongo.MongoClient(‘127.0.0.1‘, server.local_bind_port)
31     mongo_database = client[aliyun_mongo_database]
32     mongo_database.authenticate(aliyun_mongo_account, aliyun_mongo_password)
33
34     return client
35
36
37 if __name__ == ‘__main__‘:
38     mongo_client = get_aliyun_mongo_client(only_read=False)
39     mongo_client["Test"]["ssh_test"].insert({"msg": "Hello World!"})
40     mongo_client.close()

  

  

  

时间: 2024-10-10 03:55:37

python公网连接阿里云mongo服务器的相关文章

ahjesus linux连接阿里云ubuntu服务器并更改默认账号和密码,以及创建子账户

先确保本地Linux服务器SSH服务开启,如果没有开启直接执行指令:service sshd start 然后我们使用ssh指令进行远程登陆 ssh [email protected] 输入passwd指令修改旧密码 修改默认账号root vi /etc/passwd 按i键进入编辑状态 修改第1行第1个root为新的用户名 按esc键退出编辑状态,并输入:x保存并退出 vi /etc/shadow 按i键进入编辑状态 修改第1行第1个root为新的用户名 按esc键退出编辑状态,并输入:x!强

使用Navicat远程连接阿里云ECS服务器上的MySQL数据库

1.必须给服务器的安全组规则设置端口放行规则,在管理控制台中设置: 2.之后填写配置,授权对象是授权的IP,其中0.0.0.0/0为所有IP授权,之后保存; 3.Navicat使用的配置 在编辑连接处,要配置SSH和常规两项 在常规项填写配置,主机名填写:localhost,配置完成后,就使用Navicat远程连接阿里云ECS服务器上的MySQL数据库: 测试连接,完美成功. 原文地址:https://www.cnblogs.com/GreenForestQuan/p/11776130.html

用Navicat连接阿里云ECS服务器上的MySQL数据库

用navtive连接阿里云服务器(Linux)的数据库时,老是连接不上,并且报10060错误,要通过以下两个步骤解决: 1.先进入linux连接数据库并输入密码: mysql -uroot -p 2.输入以下命令进行授权: GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '这里写自己数据库的密码' WITH GRANT OPTION; 3.刷新权限: FLUSH PRIVILEGES; 4.添加了权限之后,还是连接不上数据库.必须给

本地Windows远程桌面连接阿里云Ubuntu服务器

本地Windows远程桌面连接阿里云Ubuntu 16.04服务器: 1.目的:希望通过本地的Windows远程桌面连接到阿里云的Ubuntu服务器,通过远程桌面图形界面的方式操作服务器. 2.条件:申请的阿里云Ubuntu服务器一台,本地Windows操作系统电脑一台. 3.如何远程桌面连接: (1)首先通过Windows系统下连接Linux系统的命令行工具连接Ubuntu服务器,(工具:xshell,securecrt,putty等). (2)通过Windows下工具连接到linux操作系统

阿里云如何让外网访问自己的服务器公网访问阿里云自己服务器

1.在自己阿里云控制台上设置开发端口 必须要开发端口不然外网访问不了你的网页 2.阿里云搭建flask项目供外网访问 用flask进行web项目开发,因为我是阿里云直接用的,Centos7.3,Python3.6.5 然后发现按照廖雪峰老师的代码,无法访问,但是没有采用flask的时候,是可以进行访问的,所以肯定是代码有问题. flask默认IP用的是127.0.0.1,端口是5000,但是我的外网无法访问,所以需要指定IP和端口进行操作, run(host=‘x.x.x.x’ ,port=80

使用navicat for mysql或SQLyog连接阿里云等服务器的mysql

我是使用navicat的windows端 连接centos下mysql服务器 其实配过远程连接grant all privileges on . to [email protected]’%'identified by ‘password’; 并在服务器控制台打开3306端口就可以直接连接了 (本地连接的话常规页面设下账号密码就OK)设置如下图 原文链接:https://blog.csdn.net/liyifan687/article/details/80040246 原文地址:https://

Linux------使用Xfpt6连接阿里云ECS服务器

1.安装Xftp6,直接下一步到安装完成就可以了 2.新建文件传输 3.新建会话 4.填写会话信息 5.点击“连接”即可 原文地址:https://www.cnblogs.com/tianhengblogs/p/10597273.html

Windows下使用远程桌面连接阿里云ubuntu 16.04服务器

Windows图形化远程连接阿里云主机Ubuntu 16.04云服务器前提:自己在做渗透测试的时候由于没有公网IP,很苦恼自己搭建的环境无法公网访问,就在网络寻找资源,最开始使用的是花生壳的内网穿透工具,但是看到收费,我这样的穷屌丝一看到收费是万万不能的,决定另辟蹊径看到有篇帖子说ngrok是开发者调试最喜欢的工具,决定试一下.果然,即免费又好用,做了内网映射成功访问,但是域名不是自己的就想搞一个域名,最终在阿里云花了一块钱买了tech的域名(一年).现在扯一下阿里,我挺看好阿里的,对用户比较实

windows 使用vnc图形化界面远程连接阿里云ubuntu 16.04云服务器

** 使用vnc图形化界面远程连接阿里云ubuntu 16.04云服务器** 前提:昨天写了一篇博客使用Windows远程桌面连接阿里云服务器,虽然成功连接,但是消耗内存比较大,像我的阿里云1G 1核的乞丐版,卡顿比较严重,用起来非常的不爽,和同事讨论了一下建议说用vnc来连接,Windows下下载vnc viewer 图形化界面连接效果还不错!于是回去找了资源鼓捣了一下,特写出来与大家分享!(写的步骤有点多,但是还是挺简单的) 使用Windows主机下载vnc viewer安装!下载链接地址: