创建超级管理员用户
- 将配置文件 mongodb.conf 的 auth 项设置为 false ,或者在启动时不添加 auth 参数,此时在 mongo shell 可不用验证进行读写操作
# 认证模式
auth=true
- 使用 mongo 命令进入 mongo shell ,在 admin 库创建 root 角色用户
user admin
db.createUser({user:'root',pwd:'ea123456', roles:[{role:'root', db:'admin'}]}) // db:'admin' 可省略
- 将配置文件 mongodb.conf 的 auth 项设置为 true ,或者在启动时添加 auth 参数,进入 mongo shell,需要在 admin 库下验证才能进行读写操作
use admin
db.auth("ea", "ea123456")
show dbs
- 使用 show users 命令可以查看创建的用户
show users
创建普通用户读写单独库
- 开启认证后,必须使用有操作 admin 库权限的用户登录认证后才能添加用户。因为用户信息保存在 admin 库的集合 system.users 中
use admin
db.auth("ea", "ea123456")
- 切换到需要该用户读写的库,再创建用户。
use article
db.createUser({user:'user1',pwd:'ea123456', roles:[{role:'readWrite', db:'article'}]})
- 注意:若不切换到 article 而直接在 admin 库创建用户,则后期连接需要 use admin 来认证用户,在 Spring Boot 中使用 MongoDB 连接串种需要加上参数 authSource
spring:
data:
mongodb:
uri: mongodb://user1:ea123456@ip:27017/article?authSource=admin
查看当前库下所有用户
use article
show users
修改密码
use article
db.changeUserPassword("user1", "123456")
删除用户
use article
db.dropUser("user1")
SpringBoot 连接 MongoDB
- pom.xml 添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
- 新增配置
spring:
data:
mongodb:
uri: mongodb://用户名:密码@服务器IP:端口/数据库名
# 上方为明确指定某个数据的用户进行连接
# 也可以使用admin 数据库中的用户进行连接 统一到admin 数据库进行认证
# admin 用户认证 url 写法: mongodb://账户:密码@ip:端口/数据库名?authSource=admin&authMechanism=SCRAM-SHA-1
- 使用 MongoTemplate 操作
MongoDB 内置角色
- Read :允许用户读取指定数据库
- readWrite:允许用户读写指定数据库
- backup,retore :在进行备份、恢复时可以单独指定的角色,在db.createUser()方法中roles里面的db必须写成是admin库,要不然会报错
- dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
- userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
- clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
- readAnyDatabase :只在admin数据库中可用,赋予用户所有数据库的读权限
- readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
- userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限,
- dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
- root:只在admin数据库中可用。超级账号,超级权限
参考
- https://blog.csdn.net/weixin_44799217/article/details/127940726
- https://blog.csdn.net/weixin_44834554/article/details/126768329