前言

  • 本文对 MongoDB 4.2.x 适用
  • 本文对 Ubuntu 18.04 LTS 适用

实例

  • 创建 root 用户
$ mongo 127.0.0.1
> show dbs;
> use admin;
> show users;
> db.createUser({user:"root", 
                 pwd: passwordPrompt(),   // 也可以直接给明文字符串
                 roles: [{role:"root", db:"admin" }]
               });
> db.changeUserPassword('root', 'rootNew');  // 修改密码
  • 给 admin 用户授予/取消 root 权限
# 授予 root 权限
> db.grantRolesToUser( "admin" , [{role: "root", db: "admin"}])
# 取消 root 权限
> db.revokeRolesFromUser( "admin" , [{role: "root", db: "admin"}]
  • 编辑配置文件(/etc/mongod.conf),开启认证
security:
    authorization: enabled
  • 重启 mongodb 服务
sudo systemctl restart mongod
  • 创建其他用户
$ mongo 127.0.0.1/admin -u root
// 创建管理员用户
// roles: ["dbAdminAnyDatabase", "readWriteAnyDatabase"] 与下面两种写法等价
// [{role: "dbAdminAnyDatabase", db: "admin"}, {role: "readWriteAnyDatabase", db: "admin"}]
// roles: [{role: "dbAdminAnyDatabase", db: "admin"}, "readWriteAnyDatabase"]
> use admin
> db.createUser(
  {
    user: "myUserAdmin",
    pwd: passwordPrompt(), // 也可以直接给明文字符串
    roles: ["dbAdminAnyDatabase", "readWriteAnyDatabase"]
  }
)
// 创建普通用户
> use test
> db.createUser(
  {
    user: "myTester",
    pwd:  passwordPrompt(),   // 也可以直接给明文字符串
    roles: [{role: "readWrite", db: "test"},
            {role: "read", db: "reporting"}]
  }
)
本文出自 qbit snap

qbit
268 声望279 粉丝