Mongo 权限检查

Posted dailycode

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongo 权限检查相关的知识,希望对你有一定的参考价值。

权限检查

MongoDB用户权限分配的操作是针对某个库来说的。--这句话很重要。

 

Built-In Roles(内置角色):

1. 数据库用户角色:read、readWrite;

2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;

3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;

4. 备份恢复角色:backup、restore;

5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

6. 超级用户角色:root 

// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)

7. 内部角色:__system

 

       默认不开启权限检查。关闭与开启切换服务重启服务。

 

       Windows下开启

       默认安装。

       创建用户管理帐号。

# mongo

db.createUser(

  {

    user: "root",

    pwd: "root",

    roles: [ { role: "root", db: "admin" } ]

  }

)

停止服务。

管理员运行cmd,卸载服务。

C:MongoDBServer3.6in>mongod --remove

2018-08-06T09:38:01.000+0800 I CONTROL  [main] Trying to remove Windows service

‘MongoDB‘

2018-08-06T09:38:01.002+0800 I CONTROL  [main] Service ‘MongoDB‘ removed

重新安装,添加 --auth选项。

>mongod --install --logpath C:MongoDBServer3.6datalogmongo.log --dbpath C:MongoDBServer3.6datadb –auth

       启动服务。

       登陆mongo,通过所建用户管理帐号工作。

       注意,如果首次安装就添加 --auth选项,那啥也干不了...

 

       Ubuntu下开启

# vim /etc/mongodb.conf

auth = true  # 注释即为关闭权限检查。

       # service mongodb restart  # 打开或关闭权限检查需要重启服务。

 

       创建用户、删除用户、查看用户、验证用户。

db.createUser({

    user: "",

    pwd: "",

    roles: [

        { role: "", db: "" }, ...

    ]

})

       db.system.users.find().pretty();

       use db1;

       show users;

       db.system.users.remove({user:""});

       use admin;

       db.auth("user","pwd");

 

       实例:神、所有数据库用户管理、所有数据库读、所有数据库读写、某个数据库读、某个数据库读写。

       关闭检查。

# service mongodb restart

# mongo

db.createUser(

  {

    user: "root",

    pwd: "1",

    roles: [ { role: "root", db: "admin" } ]

  }

)

db.createUser(

  {

    user: "manageruser",

    pwd: "1",

    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]

  }

)

db.createUser(

  {

    user: "readall",

    pwd: "1",

    roles: [ { role: "readAnyDatabase", db: "admin" } ]

  }

)

db.createUser(

  {

    user: "readwall",

    pwd: "1",

    roles: [ { role: "readWriteAnyDatabase", db: "admin" } ]

  }

)

db.createUser(

  {

    user: "db1r",

    pwd: "1",

    roles: [ { role: "read", db: "db1" } ]

  }

)

db.createUser(

  {

    user: "db1rw",

    pwd: "1",

    roles: [ { role: "readWrite", db: "db1" } ]

  }

)

       打开检查。

       测试。注意,切换用户需要use admin;操作数据库需要use 目标数据库;

以上是关于Mongo 权限检查的主要内容,如果未能解决你的问题,请参考以下文章

Mongo - 如何找出我连接的用户的角色?如何为用户分配完全读写访问权限?

mongo-yum安装-配置用户权限

云原生之Docker实战使用Docker部署MongoDB数据库管理工具Mongo-Express

mongodb 用户权限控制

MongoDB 学习笔记之 权限管理基础

MongoDB 只读权限设置