我使用以下说明为 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/