如何连接到远程MongoDB服务器
我在Amazon EC2上的Ubuntu服务器上运行MongoDB。由于没有简单的一体化教程解释如何为Mongo设置用户身份验证,以便您可以从笔记本电脑读取和写入MongoDB服务器,我决定写一个。
如果尚未安装MongoDB,请首先按照https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/中的步骤操作。
1.设置您的用户
首先ssh
进入您的服务器并输入mongo shell mongo
。对于此示例,我将设置一个名为的用户,ian
并授予该用户对cool_db
数据库的读写权限。
use cool_db
db.createUser({
user: 'ian',
pwd: 'secretPassword',
roles: [{ role: 'readWrite', db:'cool_db'}]
})
2.启用auth并打开MongoDB访问所有IP
编辑MongoDB配置文件。在Ubuntu上:
sudo vim /etc/mongod.conf
- 查找该
net
行并注释掉它下面的bindIp
行,这是当前限制MongoDB连接到localhost:
警告:如果没有启用授权,请不要注释掉该bindIp
行。否则,您将打开整个互联网,以便对MongoDB服务器上的所有mongo数据库拥有完全的管理员权限!
# network interfaces
net:
port: 27017
# bindIp: 127.0.0.1 <- comment out this line
- 向下滚动到该
#security:
部分并添加以下行。确保取消注释该行。security:
security:
authorization: 'enabled'
3.在EC2实例上打开端口27017
- 转到您的EC2仪表板:https: //console.aws.amazon.com/ec2/
- 转到并向下
Instances
滚动以查看实例的安全组。例如,它会是这样的launch-wizard-4
- 转到- > - > 选项卡 - > 按钮。
Netword & Security``Security Groups``Inbound``Edit
- 在端口27017上创建一个新的自定义TCP,源:Anywhere,0.0.0.0 / 0
4.最后一步:重启mongo守护进程(mongod)
sudo service mongod restart
确保您仍然可以mongo
在ssh进入框中时登录。
如果出现任何问题,请查看日志:( 注意:非Ubuntu机器会将日志保存在另一个目录中......)tail -f /var/log/mongodb/mongod.log
使用mongo
笔记本电脑上的shell 登录
您可以关闭ssh并返回本地控制台。要进入我们刚设置的远程Mongo数据库,可以使用mongo shell:
mongo -u ian -p secretPassword 123.45.67.89/cool_db
您的服务器的公共IP地址在哪里。123.45.67.89
现在,您可以cool_db
从笔记本电脑中读取和写入数据库而无需ssh
!
使用pymongo
与您的远程服务器的MongoDB
import pymongo
client = pymongo.MongoClient("mongodb://ian:secretPassword@123.45.67.89/cool_db") # defaults to port 27017
db = client.cool_db
# print the number of documents in a collection
print db.cool_collection.count()
就是这样!
网友评论