MongoDB设置账户权限只能增删改查数据而不能删除数据库
1. 流程图
flowchart TD
A[创建用户] --> B[为用户分配角色]
B --> C[为用户授予权限]
2. 详细步骤
2.1 创建用户
创建用户的步骤如下:
- 使用Mongo shell连接到MongoDB服务;
- 切换到admin数据库;
- 使用
db.createUser()
方法创建新用户。
代码示例:
```javascript
use admin
db.createUser(
{
user: "username",
pwd: "password",
roles: [ { role: "readWrite", db: "database" } ]
}
)
其中,`username`为要创建的用户名,`password`为用户密码,`database`为要授权的数据库名称。
#### 2.2 为用户分配角色
为用户分配角色的步骤如下:
1. 切换到admin数据库;
2. 使用`db.createRole()`方法创建新的角色;
3. 使用`db.grantRolesToUser()`方法为用户分配角色。
代码示例:
```markdown
```javascript
use admin
db.createRole(
{
role: "customRole",
privileges: [
{ resource: { db: "database", collection: "" }, actions: [ "insert", "find", "update" ] }
],
roles: []
}
)
db.grantRolesToUser("username", ["customRole"])
其中,`customRole`为自定义角色名称,`database`为要授权的数据库名称,`username`为要分配角色的用户名。
#### 2.3 为用户授予权限
为用户授予权限的步骤如下:
1. 切换到admin数据库;
2. 使用`db.runCommand()`方法运行授权命令。
代码示例:
```markdown
```javascript
use admin
db.runCommand({
revokeRolesFromUser: "username",
roles: ["dbAdmin"],
writeConcern: { w: "majority" , wtimeout: 5000 }
})
其中,`username`为要授予权限的用户名,`roles`为要撤销的角色。
### 3. 总结
以上就是将MongoDB设置账户权限只能增删改查数据而不能删除数据库的步骤。通过创建用户、为用户分配角色和为用户授予权限,我们可以实现对数据库的细粒度访问控制。这样做可以有效地保护数据库的安全性,同时也方便了用户对数据的操作。
### 4. 参考资料
- MongoDB官方文档:[Create a User](
- MongoDB官方文档:[Create a Role](
- MongoDB官方文档:[Grant Roles to a User](
- MongoDB官方文档:[Revoke Roles from a User](