MongoDB 默认的用户和密码是什么?

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

用户名和密码是什么? 这样保存安全吗?

350445 次浏览

默认情况下,mongodb 没有启用访问控制,因此没有默认用户或密码。

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

您可以使用以下过程或者在 MongoDB 文档中引用 启用 Auth

程序

  1. 无访问控制启动 MongoDB。

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

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

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

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

     mongosh --port 27017 --authenticationDatabase "admin"\
    -u "myUserAdmin" -p
    

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

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

除了@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" } ]
)

除了之前提供的答案之外,还有一种选择是,如果您的 db 已经通过访问控制(--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 接口并在管理数据库中创建第一个用户。第一个用户必须具有创建其他用户的权限,例如具有 userAdmin 或 userAdminAnyDatabase 角色的用户。使用 localhost 异常的连接只能在管理数据库上创建第一个用户。

这是文档的 部分链接。

在你的实例中使用 mongo

    mongo


use admin


db.createUser({user:"Username", pwd:"Password", roles:[{role:"root", db:"admin"}]})
mongod --bind_ip_all --auth

修改.conf 文件后使用此命令:

 network interfaces
net:
port: 27017
bindIp: 127.0.0.1,mongodb_server_ip