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)
或者,您可以授予用户 readWriteAnyDatabase 在 admin 数据库中的角色:
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
我正在尝试设置附加的 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)
或者,您可以授予用户 readWriteAnyDatabase 在 admin 数据库中的角色:
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