我对MongoDb有点新,我使用的是MongoDb v.2.4。问题在于,当我使用--auth参数运行mongod时,即使在验证后我也无法执行简单的操作,例如“show users” ”。但是如果我在没有--auth参数的情况下运行mongod,那么工作正常。
> use admin
switched to db admin
> db.auth("dbadmin","mypassword")
1
> show users
**Thu Feb 27 16:50:17.695 error: { "$err" : "not authorized for query on admin.sys
tem.users", "code" : 16550 } at src/mongo/shell/query.js:128**
答案 0 :(得分:8)
首先,您应该在没有--auth
的localhost上运行mongod,并使用您需要的roles创建用户。在您的情况下,您应该添加userAdminAnyDatabase
或userAdmin
角色。您可以使用--auth
运行mongod,并由此用户进行身份验证,以便远程访问system.users
个集合。
你可以阅读它here。
答案 1 :(得分:7)
> use admin
switched to db admin
> db.grantRolesToUser("your_admin_name" ,[ "root"])
此命令将以admin身份为您提供任何数据库的所有权限。
答案 2 :(得分:0)
我认为您的管理员用户尚未配置为mongo说。
我刚刚在另一个帖子中回答了一个问题并逐步解释: Not authorized for query on admin.system.namespaces on mongodb
试一试。
答案 3 :(得分:0)
不是针对OP,而是针对那些在互联网上搜索
的人Failed: error counting admin.system.users: not authorized on admin to execute command { count: "system.users", query: {}, $db: "admin" }
答案很可能是您需要在连接字符串中指定数据库名称。例如,就我而言,我正在做mongorestore
,就像这样
mongorestore --uri=mongodb+srv://[username]:[password]@[mongo-server] --dir=[backup-file]
我需要做的是
mongorestore --uri=mongodb+srv://[username]:[password]@[mongo-server]/[database-name] --dir=[backup-file]
同一件事将适用于mongodump
。关键是它默认会尝试连接到admin
数据库,而这可能并不是您要尝试的。