【问题标题】:How to fix : Error: Authentication failed如何修复:错误:身份验证失败
【发布时间】: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


【解决方案1】:

127.0.0.1 引用宿主机的localhost,如果要使用一台,则需要在两台机器上设置用户,如果要使用共享云中数据的db,则可以使用Mlab,或者如果两个ip在同一个网络中,你可以通过ip地址从一个到另一个引用

mongo <ip_address>:27017/base -u "base" -p "base"

【讨论】:

    猜你喜欢
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    • 2015-12-01
    • 2016-01-01
    • 1970-01-01
    相关资源
    最近更新 更多