MongoDB(13)---权限管理

在这里插入图片描述

上一篇:MongoDB(12)—搭建分片集群

1.MongoDB的角色与权限
角色 权限
root 超级账号,超级权限
read 允许用户读取指定数据库
readWrite 允许用户读写指定数据库
dbAdmin 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root 只在admin数据库中可用。超级账号,超级权限。
restore 从备份文件中还原恢复MongoDB数据(除了system.profile集合)的权限
2.创建角色

1.开启MongoDB服务
在这里插入图片描述
2.使用windows命令窗口连接MongoDB服务

mongo --host=IP地址 --port=端口号(不写则默认27017

在这里插入图片描述
3.创建管理员用户

在这里插入图片描述
切换到admin库。
在这里插入图片描述
创建超级管理员账号:

语法:db.createUser({"user":"账号名称",“pwd”:"密码","roles":[{“role”:"角色类型","db":"数据库名"}]})

后面的db:”数据库名"如果不写,则默认是当前的数据库
在这里插入图片描述
4.创建专门管理admin库的账号,只用来做用户权限管理

在这里插入图片描述
5.查看已经创建的账号信息

db.system.users.find()

在这里插入图片描述

6.修改账户密码

db.changeUserPassword("myroot","456123")

在这里插入图片描述

7.密码测试

db.auth("账号","密码")

测试失败(因为密码不对)
在这里插入图片描述
测试成功
在这里插入图片描述
8.删除账号

db.dropUser("myadmin")

在这里插入图片描述
此时再查看账号信息:
在这里插入图片描述
已经只有一个账号了……

9.创建普通用户
  创建普通用户可以在没有开启认证的时候添加,也可以在开启认证之后添加,但是开启认证之后,必须使用有操作admin库的用户登录认证后才能进行操作。底层都是讲用户信息保存在了admin数据库的集合system.users中。

#展示数据库
> show dbs
admin       0.078GB
article_db  0.078GB
config      0.078GB
local       0.078GB
trade_db    0.078GB
>
>#切换到普通数据库  trade_db
> use trade_db
switched to db trade_db
>
>#创建一个拥有  读写 权限的普通账户
> db.createUser({user:"zhangsan",pwd:"123456",roles:[{role:"readWrite",db:"trade_db"}]})
Successfully added user: {
        "user" : "zhangsan",
        "roles" : [
                {
                        "role" : "readWrite",
                        "db" : "trade_db"
                }
        ]
}
>
3.开启用户权限认证

1.开启权限认证的方式

  开启用户权限认证有两种方式:
1: 一种是在启动MongoDB服务的时候添加--auth参数

/usr/local/mongodb-4.0.9/bin/mongod -f config/mongod.conf --auth

2: 另外一种就是在配置文件中开启权限认证,这样可以不用再添加--auth参数了

security:
  #开启权限认证
  authorization: enabled

一般使用第二种方式比较多,一劳永逸。

storage:
  # mongod 进程存储数据目录,此配置仅对 mongod 进程有效
  dbPath: "/usr/local/mongodb-4.0.9/data/db"
  #是否开启 journal 日志持久存储,journal 日志用来数据恢复,是 mongod 最基础的特性,通常用于故障恢复。64 位系统默认为 true32 位默认为 false,建议开启,仅对 mongod 进>程有效。
  journal:
    enabled: true
  #存储引擎类型,mongodb 3.0 之后支持 “mmapv1”、“wiredTiger” 两种引擎,默认值为“mmapv1”;官方宣称 wiredTiger 引擎更加优秀。
  engine: mmapv1

systemLog:
  # 日志输出目的地,可以指定为 “file” 或者“syslog”,表述输出到日志文件,如果不指定,则会输出到标准输出中(standard output)
  destination: file
  # 如果为 true,当 mongod/mongos 重启后,将在现有日志的尾部继续添加日志。否则,将会备份当前日志文件,然后创建一个新的日志文件;默认为 false。
  logAppend: true
  # 日志路径
  path: "/usr/local/mongodb-4.0.9/log/mongod.log"

processManagement:
  #启用在后台运行mongos或者mongod进程的守护进程模式
  fork: true

net:
  # 绑定外网 op 多个用逗号分隔,默认是localhost
  bindIp: 0.0.0.0
  #指定端口
  port: 27017

security:
  #开启权限认证
  authorization: enabled

2.开启权限认证,重启服务
linux上将原来的Mongo服务关闭,重新启动MongoDB服务

在这里插入图片描述

3.使用windows命令窗口连接MongoDB服务

在这里插入图片描述
现在我们在使用命令show dbs就不会再展示数据库了

4.登录账号
此时我们需要登录用户,然后才可以进行在权限允许范围内操作数据库
在这里插入图片描述

发布了101 篇原创文章 · 获赞 50 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43655835/article/details/104559566