mongodb远程认证失败Mongod v4

Posted

技术标签:

【中文标题】mongodb远程认证失败Mongod v4【英文标题】:mongodb remote authentication failure Mongod v4 【发布时间】:2019-04-28 07:35:44 【问题描述】:

我最近在我们的一台 Windows 2016 服务器上安装了 mongodb,配置如下,并且运行 mongod

mongod --config C:\mongo_db\config\mongo_db_configuration.conf --auth

--config file
net:
    # MongoDB server listening port
    #bindIp: 0.0.0.0,192.168.43.250
    port: 27017
    bindIpAll: true
storage:
    # Data store directory
    dbPath: "C:\\mongo_db\\db"
    mmapv1:
        # Reduce data files size and journal files size
        smallFiles: true
systemLog:
    # Write logs to log file
    destination: file
    path: "C:\\mongo_db\\logs\\mongodb.log"
security:
  authorization: enabled

我们在 admin 数据库中创建了一个 root 用户

MongoDB Enterprise > db.runCommand(connectionStatus:1)

        "authInfo" : 
                "authenticatedUsers" : [
                        
                                "user" : "root",
                                "db" : "admin"
                        
                ],
                "authenticatedUserRoles" : [
                        
                                "role" : "dbAdminAnyDatabase",
                                "db" : "admin"
                        ,
                        
                                "role" : "root",
                                "db" : "admin"
                        
                ]
        ,
        "ok" : 1

我可以在本地连接到 mongod 实例 (mongo --port 27017 -u "root" -p "12345" --authenticationDatabase admin),但是在远程连接时出错。服务器防火墙被禁用。

"C:\Mongodb>mongo.exe 192.168.0.171:27017/admin -u root -p 12345
MongoDB shell version v4.0.4
connecting to: mongodb://192.168.0.171:27017/admin
Implicit session: session  "id" : UUID("c68e9dd5-6f7b-4356-bc3e-688a7e2b3e1d") 
MongoDB server version: 4.0.4
2018-11-26T23:50:47.534+0800 E QUERY    [js] Error: Authentication failed. :
DB.prototype._authOrThrow@src/mongo/shell/db.js:1685:20
@(auth):6:1
@(auth):1:2
exception: login failed"    

【问题讨论】:

【参考方案1】:

我的虚拟机也有类似问题。我有 2 台 linux 和 1 台 windows 机器(远程连接到我的 windows 机器)。假设 Linux A 有带有凭据的 mongo。当我尝试从我的 Windows 机器登录时,我遇到了与您提到的相同的错误。

但是,当我将 mongo 从 linux B 连接到 linux A 时,我可以使用以下命令从 shell 成功连接:

mongo --host 192.168.1.6 --port 27017 -u username -p 'pwd'

我在 windows 中也使用完全相同的命令,但不知何故无法登录。也许此命令可以在您的环境中运行,但也需要等待适当的解决方案。

【讨论】:

【参考方案2】:

当我遇到同样的问题时,我偶然发现了这个。我从 MongoDB shell 版本 v3.6.9 连接到 MongoDB 服务器版本 4.2.6。如果其他人像我一样发现这个问题,下面是有效的语法:

mongo --host mongodb://username:password@IP:PORT/ --authenticationDatabase admin

【讨论】:

以上是关于mongodb远程认证失败Mongod v4的主要内容,如果未能解决你的问题,请参考以下文章

Mongodb副本集认证授权

Mongodb副本集认证授权

MongoDb分片集群认证

mongodb启用密码认证连接

MongoDB无法连接/认证失败

MongoDB添加用户认证