MongoDB是一个开源的文档型非关系型数据库,采用BSON(二进制JSON)文档格式进行存储和查询。在开发中,用户管理是一个重要的问题,MongoDB也提供了相应的用户管理操作。本文将会详细介绍MongoDB的用户管理。
1. 创建用户
在MongoDB中,可以通过以下语法创建用户:
db.createUser({
user: "用户名",
pwd: "密码",
roles: [
{ role: "角色名", db: "数据库名" }
]
})
其中,用户名和密码是必填项,可以设置角色名和对应的数据库名。如下所示:
use test # 进入test数据库
db.createUser({
user: "admin",
pwd: "123456",
roles: [
{ role: "readWrite", db: "test" }
]
})
这个操作在test数据库中创建了一个名为admin的用户,并赋予readWrite权限。
1.1 简化语法
MongoDB也提供了一种简化语法,可以直接设置用户名和密码,如下所示:
use test
db.createUser("admin", "123456")
这个操作在test数据库中创建了一个名为admin的用户。
1.2 修改密码
在创建用户之后,可以使用以下语法修改用户的密码:
use test
db.changeUserPassword("admin", "654321")
这个操作将admin用户的密码修改为654321。
2. 删除用户
可以通过以下语法删除MongoDB中的用户:
use test
db.dropUser("admin")
这个操作将删除test数据库中名为admin的用户。
3. 用户权限
MongoDB中,可以通过以下语法查看用户权限:
use test
db.getUser("admin")
这个操作将返回admin用户在test数据库中的权限信息。
在MongoDB中,常用的用户权限有read、readWrite、dbAdmin和userAdmin等等。以下是几种常用场景的用户权限设置:
3.1 对数据库进行增删查改
use test
db.createUser({
user: "admin",
pwd: "123456",
roles: [
{ role: "readWrite", db: "test" }
]
})
这个操作将在test数据库中创建一个名为admin的用户,使其可以对test数据库进行增删查改操作。
3.2 对数据库进行读操作
use test
db.createUser({
user: "readonly",
pwd: "123456",
roles: [
{ role: "read", db: "test" }
]
})
这个操作将在test数据库中创建一个名为readonly的用户,使其可以查询test数据库中的数据,但不能进行增删改操作。
3.3 对多个数据库权限设置
use admin
db.createUser({
user: "admin",
pwd: "123456",
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "dbAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" },
{ role: "clusterAdmin", db: "admin" }
]
})
这个操作将在admin数据库中创建一个名为admin的用户,使其可以管理所有数据库。
4. 连接认证
MongoDB支持对连接进行认证,只有认证通过的客户端才能够连接到MongoDB数据库。要进行认证,可以在MongoDB配置文件中设置auth=true,如下所示:
security:
authorization: enabled
设置后,重启MongoDB服务生效。需要注意的是,在连接MongoDB数据库时,需要加上--authenticationDatabase参数,指定认证数据库,如下所示:
mongo --host 127.0.0.1 --port 27017 -u "admin" -p "123456" --authenticationDatabase "test"
这个操作将连接到test数据库,并使用admin用户进行认证。
总结
本文介绍了MongoDB的用户管理操作,包括创建用户、删除用户、用户权限和连接认证等。在开发中,合理管理MongoDB中的用户是非常重要的,可以有效地保护数据库的安全。