2016-08-12 63 views

回答

65

默认情况下mongodb没有启用访问控制,所以没有默认的用户名或密码。

要启用访问控制,请使用命令行选项--auth或security.authorization配置文件设置。

您可以使用以下过程或参考MongoDB文档中的Enabling Auth

程序

  1. 开始MongoDB中没有访问控制。

    mongod --port 27017 --dbpath /data/db1 
    
  2. 连接到实例。

    mongo --port 27017 
    
  3. 创建用户管理员。

    use admin 
    db.createUser(
        { 
        user: "myUserAdmin", 
        pwd: "abc123", 
        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] 
        } 
    ) 
    
  4. 使用访问控制重新启动MongoDB实例。

    mongod --auth --port 27017 --dbpath /data/db1 
    
  5. 以用户管理员身份进行身份验证。

    mongo --port 27017 -u "myUserAdmin" -p "abc123" \ 
        --authenticationDatabase "admin" 
    
+4

如果用户是使用角色userAdminAnyDatabase创建的,那么将无法创建任何数据库。因此角色部分应该是:rol​​es:[{role:“root”,db:“admin”}] – georgeos

+2

请链接[MongoDB手册的原始文章](https://docs.mongodb.com/manual/tutorial/enable) -authentication /) –

1

MongoDB的早于2.6,添加root用户命令是addUser(EG)

db.addUser({user:'admin',pwd:'<password>',roles:["root"]}) 
+0

TypeError:db.addUser不是一个功能不起作用 –

+0

直到2.6版本,你有'db.addUser'。从2.6开始,在当前版本3.4.x中,您可以使用'db.CreateUser'创建一个用户。 –

2

此外什么@Camilo席尔瓦已经提到的,如果你想给免费访问创建数据库,读取,写入数据库等,但您不想创建根角色,可以使用以下方法更改第3步:

use admin 
db.createUser(
    { 
    user: "myUserAdmin", 
    pwd: "abc123", 
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, 
      { role: "dbAdminAnyDatabase", db: "admin" }, 
      { role: "readWriteAnyDatabase", db: "admin" } ] 
    } 
)