如何在 MongoDB 上启用身份验证?
在 MongoDB 部署上启用访问控制时强制执行身份验证,要求用户识别自己。在访问启用了访问控制的 MongoDB 部署时,用户只能执行由其角色定义的活动。
以下教程使用默认身份验证方法在单独的 mongo 实例上提供访问控制。有关所有支持的身份验证机制的列表,请参阅身份验证技术。
用户管理员
如果启用了访问控制,请确保 admin 数据库具有具有 userAdmin 或 userAdminAnyDatabase 角色的用户。此用户具有管理用户和角色的能力,包括创建新用户、授予或撤销现有用户角色以及创建或更改自定义角色的能力。
注: MongoDB实例使用27017端口,数据位置为/var/lib/mongodb。该示例假设 数据目录的存在,即/var/lib/mongodb。并根据需要指定不同的数据目录。
要访问或更改数据库,MongoDB 默认不需要登录名或密码。应启用和配置强制身份验证。
按照下面提到的命令启用身份验证:
第 1 步:打开一个 Mongo Shell
mongo
第 2 步:数据库 binstar 必须能够读取和写入存储库。要建立管理员用户和服务用户,请在 MongoDB shell 中运行以下命令:
use admin
第 3 步:要管理数据库用户,请创建一个管理用户:
db.createUser({user:'siteUserAdmin', pwd: '',
roles:['userAdminAnyDatabase']})
第 4 步:要验证密码,请以该用户身份登录:
db.auth('siteUserAdmin', '')
第 5 步:创建一个 Repository 服务用户:
db.createUser({user:'spandan', pwd: '',
roles:[{db:'binstar', role:'readWrite'}]})
步骤 6:在 MongoDB 中,启用所需的身份验证:
- 如果您使用的是经典的 MongoDB 配置格式,请将 auth 密钥添加到 /etc/mongod.conf:
auth=true
- 如果您使用当前的 MongoDB 配置格式,请将 security.authorization 密钥添加到 /etc/mongod.conf:
security:
authorization: enabled
步骤 7:要重新加载设置,请重新启动 MongoDB:
sudo service mongod restart
步骤 8:将 Repository 配置文件中的 MONGO URL 选项设置为 mongodb:/username:password@hostname>。
第九步:修改配置文件后重启Repository,查看修改生效。
本地主机的例外
可以在激活访问控制之前或之后创建用户。如果您在建立任何用户之前激活访问控制,MongoDB 支持 localhost 异常。这允许您在 admin 数据库中建立用户管理员。创建用户后,您必须以用户管理员身份登录才能根据需要添加其他用户。