当前位置:   article > 正文

mongodb用户权限配置_mongodb修改用户权限

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

  1. logappend=true
  2. logpath=/etc/mongodb/mongodb/mongodb.log
  3. dbpath=/etc/mongodb/mongodb/data
  4. journal=true
  5. fork=true
  6. pidfilepath=/etc/mongodb/mongodb/mongodb.pid
  7. port=27017
  8. bind_ip=0.0.0.0
  9. replSet=rs
  10. #在配置文件末尾新增以下两项配置
  11. auth=true #启用用户认证模式
  12. 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服务配置文件增加以下配置

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

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

  1. #在配置文件末尾新增以下两项配置
  2. 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 角色授予某个用户,则该用户只能管理指定数据库,而不能执行集群范围的管理操作

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/762099
推荐阅读
相关标签
  

闽ICP备14008679号