关闭mongo
#先找到mongo的进程
ps -ef | grep mongo
kill -9 {pid}
先停止mongodb的进程
修改配置文件mongo.conf
dbpath=/opt/sumscope/mongodb/data/db
logpath=/opt/sumscope/mongodb/logs/mongodb.log
logappend=true
port=27017
fork=true
verbose=vv
bind_ip = 0.0.0.0
maxConns=100
pidfilepath =/opt/sumscope/mongodb/bin/mongo.pid
cpu = true
auth=true //是否开启权限验证
把权限认证先关闭,设置为false
重新启动mongodb,进入到mongo的bin目录下面
./mongod -f mongodb.conf
创建用户
mongo启动成功后
- 进去admin
use admin
- 创建mongo库
use STC
创建好之后再切换会admin库
use admin
- 创建用户
# 读写用户
db.createUser({user:"tbook",pwd:"tbook",roles:[{role:"readWrite",db:"STC"}]})
# 只读用户
db.createUser({user:"tbookread",pwd:"tbookread",roles:[{role:"read",db:"STC"}]})
4.查看创建的用户
#查看所有的用户
db.system.users.find().pretty()
# 查看当前库的用户
show users;
- 停止mongo,修改配置文件
配置文件的auth要设置为true
auth=true //权限认证开启
然后关闭mongo,重新启动mongo
创建用户登录
读写用户登录,并且创建集合案例
读写用户登录
./mongo --port 27017 -u "tbook" -p "tbook" --authenticationDatabase "STC"
进入设置的读写数据库
use STC
创建STC库中的集合
db.createCollection("test")
只读用户登录
./mongo --port 27017 -u "tbookread" -p "tbookread" --authenticationDatabase "STC"
只读用户创建集合
db.createCollection("test1")
只读用户不允许创建集合
查询读写用户创建的test集合
show tables;
查询集合数据
角色权限解读
Built-In Roles(内置角色):
数据库用户角色:read、readWrite。
数据库管理角色:dbAdmin、dbOwner、userAdmin。
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager。
备份恢复角色:backup、restore。
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase。
超级用户角色:root 还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)。
内部角色:__system。
具体角色:
Read:允许用户读取指定数据库。
readWrite:允许用户读写指定数据库。
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问。
userAdmin:允许用户向 system.users 集合写入,可以找指定数据库里创建、删除和管理用户。
clusterAdmin:只在 admin 数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的读权限。
readWriteAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的读写权限。
userAdminAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的 userAdmin 权限。
dbAdminAnyDatabase:只在 admin 数据库中可用,赋予用户所有数据库的 dbAdmin 权限。
root:只在 admi n数据库中可用。超级账号,超级权限。