我正在尝试添加授权到我的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用户被授权做任何事情,以便 然后,他可以创建其他用户,并给予他们更具体的权限。


当前回答

Use Admin :
    use admin

Create a super user : 

    db.createUser(
    {
    user: "master",
    pwd: "test@123",
    roles: [ 
    { 
    role: "readWriteAnyDatabase", 
    db: "admin" 
    }, 
    {
    "role" : "dbAdminAnyDatabase",
    "db" : "admin"
    },
    {
    "role" : "clusterAdmin",
    "db" : "admin"
    },
    "userAdminAnyDatabase" 
    ]
    }
    )

其他回答

Use Admin :
    use admin

Create a super user : 

    db.createUser(
    {
    user: "master",
    pwd: "test@123",
    roles: [ 
    { 
    role: "readWriteAnyDatabase", 
    db: "admin" 
    }, 
    {
    "role" : "dbAdminAnyDatabase",
    "db" : "admin"
    },
    {
    "role" : "clusterAdmin",
    "db" : "admin"
    },
    "userAdminAnyDatabase" 
    ]
    }
    )

这是个简单的问题。

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

使用yourDB

检查您的db身份验证

显示用户

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

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

or

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

对于MongoDB shell版本v4.2.8,我已经尝试了不同的方法来备份我的数据库与认证,我的赢家解决方案是

mongodb -h <your_hostname> -d <your_db_name> -u <your_db_username> -p <your_db_password>——authenticationDatabase admin -o /path/to/where/i/want . sh

您可以尝试:使用——authenticationDatabase标志会有所帮助。

mongo --port 27017 -u "admin" -p "password" --authenticationDatabase "admin"

我有这个问题,因为主机名在我的MongoDB指南针指向管理而不是我的项目。修复了在主机名后面添加/projectname的问题:) 试试这个:

在MongoDB地图集网站上选择您的项目 连接/连接MongoDB Compass 下载Compass/选择你的操作系统 我使用的是Compass 1.12或更高版本 复制Compass 1.12或更高版本下的连接字符串。 打开MongoDB Compass/Connect(左上)/Connect To 检测到连接字符串/是/ 在主机名之后追加项目名:cluster9-foodie.mongodb.net/projectname 与POSTMAN连接并测试API。 成功。

在你的代码中也使用相同的连接字符串:

之前: mongodb + srv: / / projectname: password@cluster9-foodie.mongodb.net/admin 后: mongodb + srv: / / projectname: password@cluster9-foodie.mongodb.net/projectname

祝你好运。