上一篇: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 位系统默认为 true,32 位默认为 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.登录账号
此时我们需要登录用户,然后才可以进行在权限允许范围内操作数据库