【问题标题】:MongoDB what are the default user and password?MongoDB的默认用户名和密码是什么?
【发布时间】:2016-12-19 16:06:59
【问题描述】:

我在本地和生产中使用相同的连接字符串。 当连接字符串为mongodb://localhost/mydb

用户名和密码是什么? 保持这种方式安全吗?

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    默认情况下 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"
      

    【讨论】:

    • 如果用户是用角色 userAdminAnyDatabase 创建的,那么将无法创建任何数据库。因此角色部分应该是:角色:[{角色:“root”,db:“admin”}]
    • 如果你想找到 dbpath 使用:grep dbPath /etc/mongod.conf
    • @georgeos 我试过了,没问题,可以毫无问题地创建数据库。正如 natcho 提到的,与 MongoDB 手册中提出的方法相同。
    • 如果需要删除用户并使用@georgeos 提到的不同角色再次创建使用db.dropUser("myUserAdmin")
    【解决方案2】:

    除了@Camilo Silva 已经提到的,如果您想免费访问创建数据库、读取、写入数据库等,但您不想创建 root 角色,您可以将第三步更改为以下:

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

    如果您已经创建了用户,您可以按如下方式更新用户:

    首次登录:

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

    添加权限:

    use admin
    db.grantRolesToUser(
       "myUserAdmin",
       [ { role: "userAdminAnyDatabase", db: "admin" }, 
         { role: "dbAdminAnyDatabase", db: "admin" }, 
         { role: "readWriteAnyDatabase", db: "admin" } ]
    )
    

    【讨论】:

    • 创建副本集,管理集群,需要添加角色“clusterAdmin”
    【解决方案3】:

    对于 2.6 之前的 MongoDB,添加 root 用户的命令是addUser(例如)

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

    【讨论】:

    【解决方案4】:

    除了之前提供的答案之外,如果您的数据库已经使用访问控制(--auth 开关)启动,一个选项是按照“本地主机异常”方法创建第一个用户。为此,您需要拥有对服务器的 localhost 访问权限,然后运行:

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

    如 MongoDB 文档中所述:

    localhost 异常允许您启用访问控制,然后在系统中创建第一个用户。对于 localhost 例外,启用访问控制后,连接到 localhost 界面并在 admin 数据库中创建第一个用户。第一个用户必须具有创建其他用户的权限,例如具有 userAdmin 或 userAdminAnyDatabase 角色的用户。使用 localhost 异常的连接只能在 admin 数据库上创建第一个用户。

    这是文档中section 的链接。

    【讨论】:

      【解决方案5】:

      在您的实例中转到 mongo

          mongo
      
          use admin
      
          db.createUser({user:"Username", pwd:"Password", roles:[{role:"root", db:"admin"}]})
      

      【讨论】:

      • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
      猜你喜欢
      • 2016-02-08
      • 2018-03-19
      • 2018-04-17
      • 2011-04-19
      • 1970-01-01
      • 2014-09-18
      • 2020-04-11
      • 2023-03-23
      • 1970-01-01
      相关资源
      最近更新 更多