mongodb - 无法验证到 mongo, "auth fails"

我使用以下说明为 mongo 创建了一个管理员用户:

http://docs.mongodb.org/manual/tutorial/add-user-administrator/

从 mongo 客户端看来我可以进行身份​​验证:

> use admin
switched to db admin
> db.auth('admin','SECRETPASSWORD');
1
>

但我无法以任何其他方式连接。例如:

mongo -u admin -p SECRETPASSWORD

给出错误:

JavaScript execution failed: Error: 18 { code: 18, ok: 0.0, errmsg: "auth fails" } at src/mongo/shell/db.js:L228

我在 etc/mongod.conf 中有 auth = true

我错过了什么?

最佳答案

身份验证在数据库级别进行管理。当您尝试使用数据库连接到系统时,mongo 实际上会检查您在集合 <database>.system.users 中提供的凭据。 .因此,基本上当您尝试连接到“测试”时,它会在 test.system.users 中查找凭据。并返回错误,因为它找不到它们(因为它们存储在 admin.system.users 中)。拥有所有 db 的读写权限并不意味着你可以直接连接到它们。

您必须先连接到保存凭据的数据库。试试:

mongo admin -u admin -p SECRETPASSWORD

欲了解更多信息,请查看 http://docs.mongodb.org/manual/reference/privilege-documents/

https://stackoverflow.com/questions/18216712/

相关文章:

mongodb - 无法启动/启动本地 mongo db

java - Spring Data 的 MongoTemplate 和 MongoReposito

mongodb - 使用 Mongoose 从 MongoDB 文档中删除一个键

mongodb - 溢出排序阶段缓冲数据使用量超过内部限制

node.js - 如何在 mongodb-native findOne() 中使用变量作为字段名?

mongodb - 如何将 mongodb 客户端连接到本地 Meteor MongoDB

mongodb - 如何使用 MongoDB 过滤子文档中的数组

macos - mac上mongodb数据库的位置

sql - mongo中的外键?

javascript - Mongoose:获取完整的用户列表