环境、测试:(推荐使用源码安装包)
安装之后,先关闭auth认证,进入bin目录,启动mongodb的shell,命令如下:
[root@VM_121_201_centos conf]# ./mongo
然后查看数据库:
>show dbs
看到有
admin,
local,
config
三个库
我们来创建一个管理用户
> use admin
switched to db admin
> db.createUser(
{
user: "admin",
pwd: "wo521",
roles: [ { role: "root", db: "admin" } ]
}
)
上面加粗的就是执行的命令:
user:用户名
pwd:密码
roles:指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指定内置角色和用户定义的角色。role里的角色可以选:
Built-In Roles(内置角色):
作用 | 角色 |
---|---|
1. 数据库用户角色: | read、readWrite; |
2. 数据库管理角色: | dbAdmin、dbOwner、userAdmin; |
3. 集群管理角色: | clusterAdmin、clusterManager、 clusterMonitor、hostManager; |
4. 备份恢复角色: | backup、restore; |
5. 所有数据库角色: | readAnyDatabase、readWriteAnyDatabase、 userAdminAnyDatabase、dbAdminAnyDatabase |
6. 超级用户角色: | root |
7. 内部角色: | __system |
// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
具体角色解释:
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
刚建立了 userAdminAnyDatabase 角色,用来管理用户,可以通过这个角色来创建、删除用户。验证:需要开启auth参数。
开启auth参数请查看
mongodb 的配置文件4.0https://www.jianshu.com/p/011a21c58c56
然后我们在启动mongodb的shell,输入
>show dbs; ####因为没有权限,无任何显示。
然后我们使用:
>use admin
>db.auth("admin","wo521") ###我们前面添加的管理用户
>show dbs ###显示出来了默认的三个数据库 admin、local、config
修改用户密码
db.changeUserPassword('admin','test');
此时就可以进行远程连接,增删改查和用户管理,因为添加的是root超级用户权限,其他的不在解释,本文原文连接:
https://www.cnblogs.com/zhoujinyi/p/4610050.html
网友评论