我试着学习芒果的知识以及如何保护它。我设法使用命令行使其正常工作,但当我尝试使用conf文件时,在身份验证时会出现错误。
我创建了一个管理员用户,如:
use admin
var admin = {
user:"admin",
pwd:"123456",
roles:[
{
role: "userAdminAnyDatabase",
db:"admin"
}
]
}
db.createUser(admin)启动单神mongod --auth并使用mongo 127.0.0.1:27017 --authenticationDatabase admin -u admin -p连接到它是可行的。
我想从命令行移到conf文件。为此,我创建了以下mongod.conf文件:
mongod.conf
systemLog:
destination: file
path: /Users/me/Web/blog/setup/logs/mongodb/mongo.log
logAppend: true
storage:
dbPath: /usr/local/var/mongodb
net:
port: 27017
bindIp: 127.0.0.1
security:
authorization: enabled我通过调用mongod -f mongod.conf来运行守护进程。我试图通过调用以前的命令在mongo中进行身份验证,但这一次它不起作用:
mongo 127.0.0.1:27017 --authenticationDatabase admin -u admin -p
MongoDB shell version: 3.2.5
Enter password:
connecting to: 127.0.0.1:27017/test
2018-05-11T08:50:53.908+0300 E QUERY [thread1] Error: Authentication failed. :
DB.prototype._authOrThrow@src/mongo/shell/db.js:1441:20
@(auth):6:1
@(auth):1:2
exception: login failed我打错什么东西了吗?我看不出这里有什么问题。在conf文件中缺少的东西或者调用mongo的错误参数?
发布于 2018-05-11 20:04:29
根据您的log语句,您似乎在身份验证语句中犯了错误,例如在语句中。
mongo 127.0.0.1:27017 --authenticationDatabase admin -u admin -p按照启用访问控制的MongoDB BOL文档这里,确保在管理数据库中有一个具有userAdmin或userAdminAnyDatabase角色的用户。该用户可以管理用户和角色,例如:创建用户、授予或撤销用户角色,以及创建或修改海关角色。
使用蒙戈 shell,您可以:
例如,以下代码在myUserAdmin数据库中创建用户admin:
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)期间进行身份验证
使用蒙戈、-p和--身份验证数据库命令行选项启动一个-u shell:
mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"后进行身份验证
mongo --port 27017切换到身份验证数据库(在本例中为admin),并使用db.auth(<username>, <pwd>)方法进行身份验证:
use admin
db.auth("myUserAdmin", "abc123" )正如我所看到的,在下面提到的mongod.conf文件中提到了authorization : enable。这意味着您的身份验证是启用的。因此,您的mongod.conf文件中没有问题。
systemLog:
destination: file
path: /Users/me/Web/blog/setup/logs/mongodb/mongo.log
logAppend: true
storage:
dbPath: /usr/local/var/mongodb
net:
port: 27017
bindIp: 127.0.0.1
security:
authorization: enabledhttps://dba.stackexchange.com/questions/206441
复制相似问题