美文网首页
mongodb用户创建以及权限控制

mongodb用户创建以及权限控制

作者: yandaren | 来源:发表于2018-08-06 15:44 被阅读0次

我们在安装完mongodb之后,默认是没有开启权限认证的, 但是我们在生产环境权限认证是必不可少的

1. 创建用户

  • 启动mongo shell
    我们先创建个管理员账号(该账号可以对所有数据库进行用户管理)
C:\Users\xxx>mongo
> use admin
switched to db admin
> db.createUser(
... {
...   user: "admin",
...   pwd: "123456",
...   roles: [ { role: "userAdminAnyDatabase", db: "admin"} ]
... }
... )
Successfully added user: {
        "user" : "admin",
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                }
        ]
}
>

2. 开启权限认证

如果是命令模式启动的话,就在原来的启动参数上,在加上 --auth 即可

c:\> mongod --auth --dbpath "D:\Program Files\MongoDB\Server\4.0\data"

如果是windows service方式运行的话,打开 mongo配置文件mongod.cfg, 在security项下,将authorization设置为enabled, 默认是disabled

security:
  authorization: enabled

然后重启service就可以了

3. 以认证的方式连接mongo

  • 连接的时候认证
C:\Users\xxx>mongo -port 27017 -u "admin"  -p "123456" --authenticationDatabas
e "admin"
MongoDB shell version v4.0.1
connecting to: mongodb://127.0.0.1:27017/
MongoDB server version: 4.0.1
> use admin
switched to db admin
> show users;
{
        "_id" : "admin.admin",
        "user" : "admin",
        "db" : "admin",
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                }
        ],
        "mechanisms" : [
                "SCRAM-SHA-1",
                "SCRAM-SHA-256"
        ]
}
>
  • 连接好了之后,再认证
C:\Users\xxx>mongo
MongoDB shell version v4.0.1
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 4.0.1
> use admin
switched to db admin
> db.auth("admin", "123456")
1
> show users;
{
        "_id" : "admin.admin",
        "user" : "admin",
        "db" : "admin",
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                }
        ],
        "mechanisms" : [
                "SCRAM-SHA-1",
                "SCRAM-SHA-256"
        ]
}
>

4. 根据需要创建其他的账号

  • 比如我有一个test库,我需要读写权限,然后有个game_report库,我需要只读权限, 然后我们就可以如下创建一个账号:
> use admin
switched to db admin
> db.createUser(
... {
...  user : "my_tester",
...  pwd : "123456",
...  roles: [ { role : "readWrite", db : "test" } ,
...           { role : "read", db : "game_report" } ]
... }
... )
Successfully added user: {
        "user" : "my_tester",
        "roles" : [
                {
                        "role" : "readWrite",
                        "db" : "test"
                },
                {
                        "role" : "read",
                        "db" : "game_report"
                }
        ]
}
  • 以认证方式连接test库
C:\Users\xxx>mongo
MongoDB shell version v4.0.1
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 4.0.1
> use admin
switched to db admin
> db.auth("my_tester", "123456")
1
> use test
switched to db test
> db.foo.insert( { x : 1, y : 2 } )
WriteResult({ "nInserted" : 1 })
> db.foo.find()
{ "_id" : ObjectId("5b67fc008bd89ebd4abc54aa"), "x" : 1, "y" : 2 }
>

5. 权限说明(基于角色的权限控制)

5.1 内置角色

数据库用户角色
  • read: 只读数据权限
  • readWrite:学些数据权限
数据库管理角色
  • dbAdmin: 在当前db中执行管理操作的权限
  • dbOwner: 在当前db中执行任意操作
  • userADmin: 在当前db中管理user的权限
备份和还原角色
  • backup
  • restore
夸库角色
  • readAnyDatabase: 在所有数据库上都有读取数据的权限
  • readWriteAnyDatabase: 在所有数据库上都有读写数据的权限
  • userAdminAnyDatabase: 在所有数据库上都有管理user的权限
  • dbAdminAnyDatabase: 管理所有数据库的权限
集群管理
  • clusterAdmin: 管理机器的最高权限
  • clusterManager: 管理和监控集群的权限
  • clusterMonitor: 监控集群的权限
  • hostManager: 管理Server
超级权限
  • root: 超级用户

5.2 自定义角色

内置角色只能控制User在DB级别上执行的操作,管理员可以创建自定义角色,控制用户在集合级别(Collection-Level)上执行的操作,即,控制User在当前DB的特定集合上执行特定的操作

6. 参考连接

相关文章

  • mongodb用户创建以及权限控制

    我们在安装完mongodb之后,默认是没有开启权限认证的, 但是我们在生产环境权限认证是必不可少的 1. 创建用户...

  • mongodb用户创建及权限控制(转)

    https://blog.csdn.net/u011191463/article/details/68485529...

  • 3.安全认证

    3.1 MongoDB的用户和角色权限简介 默认情况下,MongoDB实例启动运行时是没有启用用户访问权限控制的,...

  • SQL之DCL

    DCL用于账户以及权限的管理 创建用户 删除用户 用户授权 撤销授权 查看权限 一. 创建用户 用户只能在指定的I...

  • {MongoDB} MongoDB 3.2 auth

    MongoDB创建用户时提供了各种权限,默认的内置权限参见文档:here一般常见的权限是 readWrite, u...

  • DCL-权限管理

    管理用户 查询用户 创建用户主机名可以使用 % 通配 修改用户密码 删除用户 权限控制 查询权限 查询权限所有权限...

  • Postgresql 新建只读用户与分配权限

    一、创建 二、回收权限以及删除用户

  • mongoBD--管理员权限windows/ubuntu

    不开启权限的时候启动mongoDB: 创建超级管理用户 启用安全认证 重启启动mongo服务: 开启权限后登陆 修...

  • Linux MongoDB分配权限

    在 mongo.conf文件中加入 auth=true,开启权限功能 编辑文件 创建用户 进入mongodb 必须...

  • Kibana_X-Pack管理Elasticsearch权限

    在Kibana上面配置权限,验证对Elasticsearch权限控制,主要步骤如下:1.创建角色2.创建用户,并且...

网友评论

      本文标题:mongodb用户创建以及权限控制

      本文链接:https://www.haomeiwen.com/subject/ouxgvftx.html