mongodb用户权限配置

1.副本集

1.1在主节点创建管理员账号

/etc/mongodb/mongosh-1.8.1-linux-x64/bin/mongosh --port 27017

use admin

db.createUser({user:"用户名",pwd:"密码",roles:["root"]})

只要在主节点创建用户即可,从节点会自动同步数据

1.2创建集群密钥文件

在mongodb目录下创建

cd /etc/mongodb/mongodb

随机生成756字符的密钥

openssl rand -base64 756 > ./keyfile

1.3更改密钥文件权限

chmod 400 ./keyfile

1.4将密钥文件复制到所有节点的mongodb目录下

scp keyfile root@10.1.60.114:/etc/mongodb/mongodb

scp keyfile root@10.1.60.118:/etc/mongodb/mongodb

1.5修改所有节点的配置文件

vi conf/mongodb.conf

logappend=true
logpath=/etc/mongodb/mongodb/mongodb.log
dbpath=/etc/mongodb/mongodb/data
journal=true
fork=true
pidfilepath=/etc/mongodb/mongodb/mongodb.pid
port=27017
bind_ip=0.0.0.0
replSet=rs

#在配置文件末尾新增以下两项配置
auth=true         #启用用户认证模式
keyFile=/etc/mongodb/mongodb/keyfile  #集群密钥的路径

1.6重启所有节点mongodb服务

bin/mongod --config conf/mongodb.conf --shutdown

bin/mongod --config conf/mongodb.conf

1.7登录主节点验证

/etc/mongodb/mongosh-1.8.1-linux-x64/bin/mongosh --port 27017

rs.status()

 可以看到执行命令后输出报错,使用创建的管理员账户登录一下在测试

在哪个库创建的用户就需要使用哪个库去验证,因为创建时只把记录写入了这个库中

use admin 

db.auth("用户名","密码")

可以看到登录管理员用户后,可以使用命令正常输出信息 

1.8其余权限讲解

创建所有库的读写用户(管理用户只能在admin库创建)

use admin

db.createUser({user:"用户名",pwd:"密码",roles:["readWriteAnyDatabase"]})

 创建test库的读写用户(可以把用户创建到其它库,也可以统一创建到admin库)

use test

db.createUser({user:"用户名",pwd:"密码",roles:[{role:"readWrite",db:"test"}]})

创建cs库的只读用户

use cs

db.createUser({user:"用户名",pwd:"密码",roles:[{role:"read",db:"cs"}]})

还可以创建只写用户,只需把read改为write即可

注意读写用户是没有集群管理功能的,只有管理员用户有集群管理功能,即添加、删除副本集节点和查看副本集状态集群等功能

2.分片集群

2.1连接mongos服务创建管理员用户(我这里mongos服务使用20001端口)

/etc/mongodb/mongosh-1.8.1-linux-x64/bin/mongosh --port 20001

use admin

db.createUser({user:"用户名",pwd:"密码",roles:["root"]})

这里创建的用户是存到config服务节点里面的,不会存到分片里,config服务节点存储各分片的元数据还有chunk信息

2.2创建集群密钥文件

在mongodb目录下创建

cd /etc/mongodb/mongodb

随机生成756字符的密钥

openssl rand -base64 756 > ./keyfile

2.3更改密钥文件权限

chmod 400 ./keyfile

2.4将密钥文件复制到所有节点的mongodb目录下(我这里使用的是伪分片集群,一个集群里有多个mongodb服务)

scp keyfile root@10.1.60.114:/etc/mongodb/mongodb

scp keyfile root@10.1.60.118:/etc/mongodb/mongodb

2.5修改节点的配置文件

config服务和shard服务配置文件增加以下配置

#在配置文件末尾新增以下两项配置
auth=true         #启用用户认证模式
keyFile=/etc/mongodb/mongodb/keyfile  #集群密钥的路径

mongos服务配置文件增加以下配置

#在配置文件末尾新增以下两项配置
keyFile=/etc/mongodb/mongodb/keyfile  #集群密钥的路径

2.6重启所有节点mongodb服务

这里就不举例写出来了

2.7连接mongos服务验证

这里就不举例写出来了

2.8分片集群权限配置讲解

创建普通账号的话跟副本集创建是一样的,普通账号只有读写的权利,也是没有配置集群分片和查看集群信息的能力包括创建账号

只有管理员才具有所有的权力

role角色

普通用户角色:readWrite、read、write

数据库管理员角色:dbAdminAnyDatabase、userAdminAnyDatabase、readWriteAnyDatabase、readAnyDatabase、dbAdmin、dbOwner、userAdmin、backup、restore

集群管理员角色:clusterAdmin、clusterManager、clusterMonitor、hostManager

超级管理员角色:root

角色能力讲解

read:允许用户读取指定数据库中的数据

readWrite:允许用户读取和修改指定数据库中的数据

dbAdmin:允许用户执行指定数据库的管理操作,如创建和删除集合、索引等

dbOwner:相当于同时拥有 readWrite、dbAdmin 和 userAdmin 角色的权限,允许用户执行指定数据库的所有操作

userAdmin:允许用户管理指定数据库的用户帐户,包括创建和删除用户、设置用户权限等

clusterAdmin:允许用户执行集群范围的管理操作,如重新分片、添加和删除节点等

clusterManager:允许用户管理集群节点,如重启节点、设置节点参数等

clusterMonitor:允许用户监控集群状态和性能指标

hostManager:允许用户管理 MongoDB 实例的操作系统和网络设置

backup:允许用户备份指定数据库

restore:允许用户恢复指定数据库

readAnyDatabase:允许用户读取任意数据库中的数据

readWriteAnyDatabase:允许用户读取和修改任意数据库中的数据

userAdminAnyDatabase:允许用户管理任意数据库的用户帐户

dbAdminAnyDatabase:允许用户执行任意数据库的管理操作

root:相当于同时拥有所有其他角色的权限,允许用户执行任意操作

需要注意的是,这些角色的权限可以在数据库级别和集群级别分别分配。例如,如果将 dbAdmin 角色授予某个用户,则该用户只能管理指定数据库,而不能执行集群范围的管理操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值