mongodb log4j2 认证失败

mongodb log4j2 authentication failed

我正在尝试设置附加的 log4j NoSQL 以与 MongoDB 一起使用,但我在使用新创建的帐户进行身份验证时遇到问题。

我创建了以下用户:

use admin
db.createUser({
  user: "loguser1",
  pwd: "logpassword",
  roles: ["readWrite", "dbAdmin"]
})

而且,我可以使用以下方式连接:

mongo - u loguser1 - p logpassword

但是,当 log4j2 尝试连接时,我在 mongod 中收到以下错误:

2015-03-31T13:08:24.137-0500 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:63098 #9 (2 connections now open)
2015-03-31T13:08:24.161-0500 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:63099 #10 (3 connections now open)
2015-03-31T13:08:24.166-0500 I ACCESS   [conn10]  authenticate db: test { authenticate: 1, user: "loguser1", nonce: "xxx", key: "xxx" }
2015-03-31T13:08:24.167-0500 I ACCESS   [conn10] Failed to authenticate loguser1@test with mechanism MONGODB-CR: AuthenticationFailed MONGODB-CR credentials missing in the user document
2015-03-31T13:08:25.410-0500 I NETWORK  [conn10] end connection 127.0.0.1:63099 (2 connections now open)
2015-03-31T13:08:25.411-0500 I NETWORK  [conn9] end connection 127.0.0.1:63098 (2 connections now open)

这是我的(格式正确的片段)log4j2.yml:

Configuration:
  status: info
  
  Appenders:
 NoSql:
      name: Mongo
      MongoDb:
        databaseName: test
        server: localhost
        username: loguser1
        password: logpassword

我一定是在做一些愚蠢的事情,我希望你们中的一个能发现它。感谢观看!

编辑:我花了更多时间用头敲击键盘,并尝试回滚到 MongoDb 2.6.9(我一直在尝试使用 3.0),并花时间配置管理员和用户帐户 (http://docs.mongodb.org/v2.6/tutorial/add-user-administrator/),它似乎在工作。我不是 100% 肯定,但我不确定 log4j2 是否像上面所说的那样与 MongoDB 3.0 一起工作(或者,可能,我关闭了我的用户帐户)。

2015-03-31T13:08:24.167-0500 I ACCESS [conn10] Failed to authenticate loguser1@test with mechanism MONGODB-CR: AuthenticationFailed MONGODB-CR credentials missing in the user document

请注意,虽然用户凭据存储在 admin 数据库中,但您登录到 test 数据库(默认数据库 none 已指定)。

您可以执行以下操作之一:

test 数据库中创建一个具有相同角色的新用户:

use test
db.createUser({
    user: "loguser2",
    pwd: "logpassword",
    roles: ["readWrite", "dbAdmin"]
})

然后使用该用户名登录 (loguser2)

或者,您可以授予用户 readWriteAnyDatabaseadmin 数据库中的角色:

use admin
db.createUser({
    user: "loguser3",
    pwd: "logpassword",
    roles: ["readWriteAnyDatabase", "dbAdmin"]
})

并在连接时指定authenticationDatabase(如loguser3

mongo -u loguser3 -p logpassword --authenticationDatabase admin
MongoDB shell version: 2.6.0
connecting to: test