Mongo Authsource
在 MongoDB 中,authsource 是用来指定用户验证的数据库。当我们创建用户并启用权限认证后,需要在连接数据库时指定相应的 authsource。本文将详细介绍如何在连接 MongoDB 数据库时指定 authsource,并演示在不同情况下的使用方法。
什么是 authsource
在 MongoDB 中,authsource 是用来指定用户验证的数据库。默认情况下,如果没有指定 authsource,则 MongoDB 会尝试在 admin 数据库中查找用户并进行验证。
在实际生产环境中,通常会为不同的数据库创建不同的用户,并将这些用户的信息保存在各自的数据库中。因此,在连接数据库时,需要明确指定要在哪个数据库中查找用户信息进行验证。
如何指定 authsource
在连接 MongoDB 数据库时,可以通过指定 authsource 参数来明确指定用户验证的数据库。通常情况下,我们会在连接字符串中添加 authsource 参数,如下所示:
mongodb://username:password@hostname:port/databasename?authSource=admin
在上面的连接字符串中,authSource=admin 表示要在 admin 数据库中查找用户并进行验证。如果要在其他数据库中进行用户验证,则将 admin 替换为相应的数据库名称即可。
示例演示
创建用户和角色
首先,我们需要在 MongoDB 中创建用户和角色。假设我们要在 test 数据库中创建一个名为 testuser 的用户,并给予 readWrite 权限。
在 MongoDB shell 中执行以下命令创建用户和角色:
use test
db.createUser({
user: "testuser",
pwd: "password",
roles: [
{ role: "readWrite", db: "test" }
]
})
启用权限认证
接下来,我们需要在 MongoDB 配置文件中启用权限认证。在配置文件中添加以下内容:
security:
authorization: enabled
然后重启 MongoDB 服务使配置生效。
连接数据库
现在,我们可以使用以下连接字符串连接数据库,并指定 authsource 为 test:
mongodb://testuser:password@localhost:27017/test?authSource=test
如果一切正常,应该成功连接到 test 数据库并能够执行相应的操作。
结论
在 MongoDB 中,authsource 参数是非常重要的,特别是在多个数据库中有不同用户时。通过指定正确的 authsource,可以确保连接到正确的数据库并进行用户验证。务必在生产环境中合理使用 authsource 参数,以确保系统安全性和数据完整性。