- 作者:老汪软件技巧
- 发表时间:2024-10-06 04:00
- 浏览量:
MongoDB 默认情况下不启用安全模式,这意味着数据库可以在没有账号和密码的情况下直接访问。虽然这对于开发和测试环境来说非常方便,但在生产环境中,这种默认设置可能会带来严重的安全隐患。本文将详细介绍如何配置 MongoDB 的安全机制,包括创建用户、设置密码、分配权限等关键步骤。此外,我们还将探讨如何处理忘记密码的情况以及如何进行密码重置,确保数据库的安全性和管理的便捷性。
用户管理
创建专属用户:mongodb_admin
use admin;
db.createUser(
{
user: "mongodb_admin",
pwd: "Budaos_9808653!@",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
);
注意事项:建议使用密码生成器生成随机且复杂的安全密码,以增加数据库的安全性。角色说明:userAdminAnyDatabase 角色授予了 mongodb_admin 用户管理其他数据库用户的权限;readWriteAnyDatabase 则允许用户在任何数据库中进行读写操作。MongoDB 角色分为多种类型,包括但不限于:
查看当前数据库下的用户
show users;
删除用户
db.dropUser("username");
例如:db.dropUser("mongodb_admin");
修改用户密码
db.changeUserPassword("username", "newpassword");
密码认证
db.auth("username", "password");
用户权限控制
查看用户权限
use admin;
show users;
或
db.getUser("AI2301");
查看权限能执行的操作
db.getRole("read",{showPrivileges:true})
授权(为账户分配角色)
创建数据库student并创建用户AI2301和数据库读取和写入数据权限。
use student;
db.createUser(
{
user: "AI2301",
pwd: "AI2301",
roles:[{role:"readWrite",db:"student"}]
}
);
db.grantRolesToUser("AI2301",);
授权/取消权限
db.grantRolesToUser("AI2301",[{role:"readWrite",db:"student"}]);
db.revokeRolesFromUser("AI2301",[{role:"readWrite",db:"student"}]);
全局配置开启数据库身份校验
编辑mongodb的配置文件,加入安全相关配置,如果要立即生效,必须重启mongodb服务
security: authorization: enabled
重启 MongoDB 服务使更改生效。
开启远程访问
指定允许访问的 IPMongoDB可以通过在启动参数或配置文件中添加--bind_ip来设置允许访问的ip 特别注意:bindIp的值只能为127.0.0.1或0.0.0.0以及当前主机的具体地址。例如:bind_ip: 127.0.0.1
bind_ip: 0.0.0.0 表示所有远程客户端都可以访问,需要结合防火墙端口和并限制远程IP等确保访问安全。
以上步骤可以帮助您有效地配置 MongoDB 的用户管理,并确保数据的安全性。通过合理的权限分配和有效的安全措施,可以大大提高 MongoDB 在生产环境中的安全性。
其他场景忘记密码
找到mongodb的配置文件mongod.conf,编辑配置文件将用户验证的配置项屏蔽
重启mongod,并 登录mongo
这时候登录就不需要密码认证了,然后删除以前设置的用户
use admin
db.system.users.find()
db.system.users.remove({})
重置密码
db.createUser({user:'userName',pwd:'passWord',roles:[{"role":"root","db":"admin"}]});
db.auth('userName', 'passWord');
将配置文件的验证还原,重启mongod就可以了
“在掌握了如何配置用户认证与权限之后,接下来我们将继续深入探讨 MongoDB 的另一项关键运维技能——数据库的备份与恢复,这对于确保数据的安全性和业务连续性至关重要。”