首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用mongod.conf时Mongo失败

使用mongod.conf时Mongo失败
EN

Database Administration用户
提问于 2018-05-11 05:58:22
回答 1查看 15.3K关注 0票数 2

我试着学习芒果的知识以及如何保护它。我设法使用命令行使其正常工作,但当我尝试使用conf文件时,在身份验证时会出现错误。

我创建了一个管理员用户,如:

代码语言:javascript
复制
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

代码语言:javascript
复制
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中进行身份验证,但这一次它不起作用:

代码语言:javascript
复制
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的错误参数?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2018-05-11 20:04:29

根据您的log语句,您似乎在身份验证语句中犯了错误,例如在语句中。

代码语言:javascript
复制
mongo 127.0.0.1:27017 --authenticationDatabase admin -u admin -p

按照启用访问控制的MongoDB BOL文档这里,确保在管理数据库中有一个具有userAdminuserAdminAnyDatabase角色的用户。该用户可以管理用户和角色,例如:创建用户、授予或撤销用户角色,以及创建或修改海关角色。

连接和身份验证为用户管理员

使用蒙戈 shell,您可以:

  • 通过传入用户凭据连接身份验证,或
  • 首先使用茅斯身份验证连接,然后发出db.auth() 方法进行身份验证。

例如,以下代码在myUserAdmin数据库中创建用户admin

代码语言:javascript
复制
use admin
db.createUser(
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

在连接

期间进行身份验证

使用蒙戈、-p和--身份验证数据库命令行选项启动一个-u shell:

代码语言:javascript
复制
mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"

连接

后进行身份验证

蒙戈外壳连接到单神

代码语言:javascript
复制
mongo --port 27017

切换到身份验证数据库(在本例中为admin),并使用db.auth(<username>, <pwd>)方法进行身份验证:

代码语言:javascript
复制
use admin
db.auth("myUserAdmin", "abc123" )

正如我所看到的,在下面提到的mongod.conf文件中提到了authorization : enable。这意味着您的身份验证是启用的。因此,您的mongod.conf文件中没有问题。

代码语言:javascript
复制
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

进一步参考这里这里

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/206441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档