MongoDB的权限管理

1.用户权限说明

image.png

2.用户创建语法

{
user: "<name>", user字段:用户的名字;
pwd: "<cleartext password>", pwd字段:用户的密码;
customData: { <any information> }, cusomData字段:为任意内容
roles: [
roles字段:指定用户的角色,可以用一个空数组给新用户设定空角色;
{ role: "<role>",
db: "<database>" } | "<role>",
...
]
}
roles 字段:可以指定内置角色和用户定义的角色。
roles字段:指定用户的角色,可以用一个空数组给新用户设定空角色;

3.创建管理员用户

3.1进入管理数据库
> use admin
创建管理用户,root权限
 >db.createUser(
    {
      user: "root",
      pwd: "root",
      roles: [ { role: "root", db: "admin" } ]
    }
    )    

注意:
创建管理员角色用户的时候,必须到admin下创建。删除的时候也要到相应的库下操作。

3.2查看创建完用户后的collections;
    >use admin
    > show collections; 
      system.users  # 用户存放位置
      system.version
    
    > db.system.users.find().pretty()
    {
        "_id" : "admin.root",
        "user" : "root",
        "db" : "admin",
        "credentials" : {
            "SCRAM-SHA-1" : {
                "iterationCount" : 10000,
                "salt" : "v3v1oEvwvX70i+ENCkSiLQ==",
                "storedKey" : "aswu2GvDubCXFokl72ZVYzgW1DA=",
                "serverKey" : "6maLC10hXo+MJACBWhkwEfRuRkE="
            }
            },
        "roles" : [
            {
                "role" : "root",
                "db" : "admin"
            }
        ]
    }

    > show users   (只能查询本库)
      {
        "_id" : "admin.root",
        "user" : "root",
        "db" : "admin",
        "roles" : [
            {
                "role" : "root",
                    "db" : "admin"
            }
            ]
        }
3.3.验证用户是否能用
    > db.auth("root","root")
    1  # 返回 1 即为成功
3.4.用户创建完成后在配置文件中开启用户验证
    cat >>/etc/mongod.conf<<-'EOF'
      security:
      authorization: enabled
      EOF
      ** *之后需要重启服务****

4登录MongoDB

方法一:命令行中进行登陆
  [mongod@MongoDB ~]$ mongo -uroot -proot admin 
  MongoDB shell version: 3.2.8
  connecting to: admin
方法二:在数据库中进行登陆验证:
  [mongod@MongoDB ~]$ mongo 
    MongoDB shell version: 3.2.8
    connecting to: test
    > use admin
    switched to db admin
  > db.auth("root","root")
  1
  > show tables;
    system.users
    system.version

5按生产需求创建应用用户

创建只读用户
5.11在test库创建只读用户test
  use test
  db.createUser(
    {
      user: "test",
        pwd: "test",
      roles: [ { role: "read", db: "test" } ]
      }
    )
5.1.2测试用户是否创建成功
  db.auth("test","test")
  show  users;
5.1.3登录test用户,并测试是否只读
    show collections;
    db.createCollection('b')
5.2创建某库的读写用户
5.2.1创建test1用户,权限为读写
    db.createUser(
      {
        user: "test1",
        pwd: "test1",
        roles: [ { role: "readWrite", db: "test" } ]
      }
    )
5.2.2查看并测试用户
    show users;
    db.auth("test1","test1")
5.3创建对多库不同权限的用户
5.3.1创建对app为读写权限,对test库为只读权限的用户
    use app
    db.createUser(
      {
        user: "app",
        pwd: "app",
        roles: [ { role: "readWrite", db: "app" },
             { role: "read", db: "test" }
         ]
        }
       )
5.3.2查看并测试用户
    show users
    db.auth("app","app")

6.删除用户

1.删除app用户:先登录到admin数据库
  mongo -uroot –proot 127.0.0.1/admin
2.进入app库删除app用户
  use app
  db.dropUser("app")

7. 自定义数据库

1.创建app数据库的管理员:先登录到admin数据库
  use app
  db.createUser(
  {
  user: "admin",
  pwd: "admin",
  roles: [ { role: "dbAdmin", db: "app" } ]
  }
  )
2.创建app数据库读写权限的用户并具有clusterAdmin权限:
  use app
  db.createUser(
    {
    user: "app04",
    pwd: "app04",
    roles: [ { role: "readWrite", db: "app" },
    { role: "clusterAdmin", db: "admin" }
    ]
    }
     )

SQL与MongoDB语言对比

mongo博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • MongoDB的访问控制能够有效保证数据库的安全,访问控制是指绑定Application监听的IP地址,设置监听端...
    散入风中阅读 5,095评论 0 3
  • http://www.cnblogs.com/zhoujinyi/p/4610050.html 创建用户,用户是跟...
    bbmm阅读 4,849评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,461评论 19 139
  • 在黄昏 在球场 携着夕阳 打磨时光 带着不敷衍的步伐 干净利落 残阳拖出烟痕 低吟浅唱 红袖添香 我在红窗子前站了...
    你是我的梦诶阅读 2,224评论 0 1
  • 一、自杀的哲学基础 阿·加缪在《西西弗斯的神话》中,开始就写到:“真正严肃的哲学只有一个,那就是——自杀。判断...
    冰眉铁面阅读 4,168评论 11 20