【问题标题】:MongoDB shell command line authentication failsMongoDB shell 命令行身份验证失败
【发布时间】:2014-05-18 12:26:56
【问题描述】:

我设置了带有身份验证的副本集。我使用了this 教程。我设置了密钥文件、管理员用户和其他用户。一切正常 - 匿名访问被禁用,我可以登录

$ mongo
MongoDB shell version: 2.6.1
connecting to: test
Error while trying to show server startup warnings: not authorized on admin to execute     command { getLog: "startupWarnings" }
rs0:PRIMARY> use admin
switched to db admin
rs0:PRIMARY> db.auth("USERNAME","PASSWORD")
1
rs0:PRIMARY> 

使用我创建的用户的凭据。

但我无法从命令行登录

$ mongo -u 'USERNAME' -p 'PASSWORD'
MongoDB shell version: 2.6.1
connecting to: test
2014-05-18T14:23:47.324+0200 Error: 18 { ok: 0.0, errmsg: "auth failed", code: 18 } at   src/mongo/shell/db.js:1210
exception: login failed

使用相同的凭据。我在文档或 SO 上没有找到任何有用的东西。

【问题讨论】:

    标签: mongodb authentication database-replication


    【解决方案1】:

    在您的示例中执行的壳内身份验证是针对 admin 数据库的。上面发布的命令行未指定数据库,因此针对默认数据库 test 进行身份验证。试试这个,通过命令行对 admin db 进行身份验证:

    mongo admin -u 'USERNAME' -p 'PASSWORD'
    

    如果服务器不在本地主机上,那么你可以使用这个:

    mongo your_host_name:your_port/admin -u 'USERNAME' -p 'PASSWORD'
    

    【讨论】:

    • 是的,我想不通...thanx,它有效:-)
    • 这个问题和答案值得很多赞成,因为它在 Mongo 文档中没有正确指定。
    • 不应该是:mongo your_host_name:your_PORT/admin -u 'USERNAME' -p 'PASSWORD'
    • 很好@sebweisgerber - 我会解决的。
    【解决方案2】:

    由于最初回答了这个问题,现在可能因为更新而有所不同,但只有在用户名/密码用双引号引起来时,身份验证才会成功。 例如,

    mongo admin -u "myName" -p "myPassword"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-07
      • 1970-01-01
      • 1970-01-01
      • 2014-08-07
      • 2015-05-06
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      相关资源
      最近更新 更多