【发布时间】:2019-06-28 11:19:06
【问题描述】:
我正在尝试在 mongodb 服务器上远程连接,但我遇到了一些问题。
在远程服务器上,我修改了“mongod.cfg”文件,并将 bindIp 从 127.0.0.1 更改为 0.0.0.0 以允许访问。在同一个文件中,我通过添加 Authentication: 'enabled' 更改了安全性。
我创建了一个管理员用户:
> use admin
> db.createUser({user: "root", pwd: "root", roles:["root"]})
我用 --auth 标志启动了 mongodb
> mongod --auth --port 27017
服务器启动后,我以管理员身份连接到它
mongo 127.0.0.1:27017 -u "root" -p "root" --authenticationDatabase "admin"
连接后,我创建了一个普通用户
> use base
> db.createUser({user: "base", pwd: "base", roles:["dbOwner"]})
然后我从 mongo shell 断开并使用新的用户凭据重新连接
> mongo <127.0.0.1:27017>/base -u "base" -p "base"
它在远程服务器上正常工作。
在本地机器上,我在本地机器上尝试了相同的命令,但失败了
> mongo 127.0.0.1:27017/base -u "base" -p "base"
[js] Error: Authentication failed. :
connect@src/mongo/shell/mongo.js:344:17
@(connect):2:6
exception: connect failed
【问题讨论】:
-
如果我理解正确,您有 2 台机器。从您想要连接到另一台机器上的 mongod 的一台机器。如果是这种情况,那么从客户端机器上,您不能使用 127.0.0.1 ip 来连接其他机器上的 mongod。您需要检查服务器机器上可用的其他公共/私有 ip,然后使用正确子网中的 ip。
-
@vk-code 我如何检查并选择正确的?
-
假设都是 linux,'netstat -nap | grep mongod' 将为您提供 mongod 正在使用的 IP。然后使用其中一个 IP。
-
@vk-code 服务器机器在windows10下
-
对于windows 10,您可以按照
tasklist | findstr mongod获取mongod 的pid,然后netstat -ano | findstr PID获取运行mongod 的IP。然后按照前面的建议使用此 IP。
标签: mongodb