因此,我们已经在网络中积累了足够的应用程序,这些应用程序使用MongoDB证明构建专门用于MongoDB的专用服务器是合理的。不幸的是,我对mongodb还是很陌生(来自SQL / MySQL派生)。我遵循了有关为我的环境安装和配置mongodb的一些指南。没有一个是完美的,但是我想我已经接近了……我已经设法达到可以使用以下命令从本地服务器连接到db服务器的地步:
mongo -u user 127.0.0.1/admin
但是,我无法使用本地地址或使用其网络地址IE的远程计算机连接到服务器,
mongo -u user 192.168.24.102/admin
我尝试了启用和禁用身份验证的情况,并且尝试将bindIP设置为192.168.24.102和0.0.0.0,但没有任何帮助。认为这是防火墙问题,所以我完全禁用了防火墙...一样。没有爱...
那秘诀是什么?如何远程连接到MongoDB服务器?
一些注意事项:该服务器仅在本地网络上。某些时候会有一些NAT恶作剧将公共流量从远程应用程序服务器引导到它,但是只有特定的端口(发生这种情况时我们将不会使用27017),并且它将位于功能强大的防火墙设备后面,因此我不是像保护MongoDB本身一样,担心保护服务器安全。
答案 0 :(得分:0)
此答案假设安装程序是Linux服务器完全处于远程状态,并且已经安装了MongoDB。
步骤:
1。通过SSH连接到远程服务器。
ssh <userName>@<server-IP-address>
2。启动Mongo Shell,并将用户添加到MongoDB。
添加管理员;
use admin
db.createUser(
{
user: "AdminSammy",
pwd: "AdminSammy'sSecurePassword",
roles: [
{"userAdminAnyDatabase",
"dbAdminAnyDatabase",
"readWriteAnyDatabase"}
]
}
)
然后添加一个或多个普通用户。将用户添加到特定的数据库。
use some_db
db.createUser({
user: 'userName',
pwd: 'secretPassword',
roles: [{ role: 'readWrite', db:'some_db'}]
})
3。编辑您在mongod.conf
目录中找到的MongoDB配置文件etc
。
sudo vim /etc/mongod.conf
向下滚动到#security:
部分,然后添加以下行。确保取消对security:
行的注释。
security:
authorization: 'enabled'
启用授权后,只有使用密码验证的用户才能访问数据库。在这种情况下,这些就是上面step 2
中添加的内容。
注意:也可以通过SSH使用Visual Studio代码来编辑mongo.conf
文件。
4。将远程服务器的IP地址添加到mongod.conf文件中。
寻找net
行,并添加托管此MongoDB安装的服务器的IP地址,例如178.45.55.88
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1, 178.45.55.88
5。打开服务器实例上的端口27017 。
这允许知道您的远程服务器IP地址的任何人从世界任何地方访问您的MongoDB服务器。这是拥有经过身份验证的用户的原因之一。更强大的安全性处理方式真的很重要!为此,请咨询MongoDB manual。
使用ufw
检查防火墙状态。
sudo ufw status
如果未激活,请激活它。
sudo ufw enable
然后
sudo ufw allow 27017
重要:您还需要允许端口22与远程服务器进行SSH通信。否则,您将被锁定在远程服务器之外。这里的假设是SSH使用端口22进行通信,这是默认设置。
sudo ufw allow 22
6。重新启动Mongo守护程序(mongod)
sudo systemctl restart mongod
7。使用Mongo Shell连接到远程Mongo服务器
您现在可以使用以下命令连接到远程MongoDB服务器。
mongo -u <user-name> -p <user-password> <remote-server-IP-address>:<mongo-server-port>
您还可以通过身份验证连接到远程MongoDB服务器:
mongo -u <user-name> -p <user-password> <remote-server-IP-address>:<mongo-server-port> --authenticationDatabase <auth-db-name>
您还可以通过身份验证连接到特定的远程MongoDB数据库:
mongo -u <user-name> -p <user-password> <remote-server-IP-address>:<mongo-server-port>/<db-name> --authenticationDatabase <auth-db-name>
此刻,您无需使用some_db
就可以从本地计算机在ssh
数据库中进行读写。
重要:请考虑任何数据库的标准安全措施。本地安全实践应指导上述任何步骤的操作。