我正在尝试添加授权到我的MongoDB。 我使用MongoDB 2.6.1在Linux上完成所有这些工作。 我的mongo .conf文件是旧的兼容格式 (这就是安装的方式)。

1)我创建了admin用户,如(3)所述

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

2)然后我通过取消注释这一行来编辑mongo .conf

真实的

3)最后,我重启了mongod服务,并尝试登录:

/usr/bin/mongo localhost:27017/admin -u sa -p PWD

4)我可以连接,但它说这个连接。

MongoDB shell version: 2.6.1
connecting to: localhost:27017/admin
Welcome to the MongoDB shell!
The current date/time is: Thu May 29 2014 17:47:16 GMT-0400 (EDT)
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }

5)现在我创建的sa用户似乎没有任何权限。

root@test02:~# mc
MongoDB shell version: 2.6.1
connecting to: localhost:27017/admin
Welcome to the MongoDB shell!
The current date/time is: Thu May 29 2014 17:57:03 GMT-0400 (EDT)
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
[admin] 2014-05-29 17:57:03.011 >>> use admin
switched to db admin
[admin] 2014-05-29 17:57:07.889 >>> show collections
2014-05-29T17:57:10.377-0400 error: {
        "$err" : "not authorized for query on admin.system.namespaces",
        "code" : 13
} at src/mongo/shell/query.js:131
[admin] 2014-05-29 17:57:10.378 >>> use test
switched to db test
[test] 2014-05-29 17:57:13.466 >>> show collections
2014-05-29T17:57:15.930-0400 error: {
        "$err" : "not authorized for query on test.system.namespaces",
        "code" : 13
} at src/mongo/shell/query.js:131
[test] 2014-05-29 17:57:15.931 >>>

有什么问题吗?我把整个过程重复了三次 我想我做的都是在MongoDB文档中指定的。但这并不奏效。 我期望这个sa用户被授权做任何事情,以便 然后,他可以创建其他用户,并给予他们更具体的权限。


当前回答

这是个简单的问题。

必须切换目标db而不是admin,这一点很重要。

使用yourDB

检查您的db身份验证

显示用户

如果你得到一个{}空对象,那就是问题。你只需要打字

db createUser。( { 用户:“yourUser”, pwd:“密码”, roles: ["readWrite", "dbAdmin"] })

or

db。grantRolesToUser('yourUser',[{role: ' dbAdmin ', db: ' yourDB}])

其他回答

我在MongoDB 4.2的Centos 7上执行了这些步骤。(远程用户)

更新mongo .conf文件

vi /etc/mongod.conf
   net:
     port: 27017
     bindIp: 0.0.0.0 
   security:
     authorization: enabled

启动MongoDB服务恶魔

systemctl start mongod

打开MongoDB shell

mongo

在shell上执行此命令

use admin
db.createUser(
  {
    user: 'admin',
    pwd: 'YouPassforUser',
    roles: [ { role: 'root', db: 'admin' } ]
  }
);

已创建远端root用户。现在,您可以在开发机器上使用任何MongoDB GUI工具测试这个数据库连接。比如Robo 3T

我在这个线程中遇到了类似的问题,但我的问题是我使用了集合名称而不是数据库名称。

这有点令人困惑——我相信您需要授予自己readWrite权限来查询数据库。具有dbadmin或useradmin权限的用户可以管理数据库(包括授予自己额外的权限),但不能执行查询或写入数据。

所以允许自己读写,你应该没事-

http://docs.mongodb.org/manual/reference/built-in-roles/#readWrite

我也对同样的问题感到困惑,在添加第一个管理用户时,我将角色设置为root后,一切都正常了。

use admin
db.createUser(
  {
    user: 'admin',
    pwd: 'password',
    roles: [ { role: 'root', db: 'admin' } ]
  }
);
exit;

如果您已经创建了admin用户,您可以这样修改角色:

use admin;
db.grantRolesToUser('admin', [{ role: 'root', db: 'admin' }])

要获得完整的身份验证设置参考,请参阅我在互联网上进行了数小时研究后编写的步骤。

如果使用Atlas,请注意不能通过mongo shell创建用户。

我一直在用头撞墙,直到我看到了这个: https://www.mongodb.com/community/forums/t/cant-create-a-root-user-from-mongo-shell/101369