一、为什么需要设置密码
MongoDB 是一种数据存储方式,没有像传统数据库一样的表结构,能够用 JavaScript 语言来操作数据库,这样就非常方便。但是 MongoDB 原生是没有身份验证机制的,这就意味着你如果不设置密码,别人很容易就能够登录你的数据库,并且随意查看和编辑你的数据,这显然不是我们想看到的结果。因此,在 MongoDB 中设置密码就变得尤为重要。
二、MongoDB 设置密码的步骤
以下在 CentOS 7 上为例,具体操作可能会略有不同:
1. 启动 MongoDB 并生成管理员用户
mongod --auth # 启动 MongoDB 时启用身份验证
mongo admin # 进入管理员管理页面
db.createUser({user:"admin", pwd:"123456", roles:[{role:"root", db:"admin"}]}) # 创建管理员用户
exit # 退出管理员管理页面
这里 admin 是管理员用户名,123456 是管理员密码。roles:[{role:"root", db:"admin"}] 意味着为该用户授权 root 权限并在 admin 数据库中进行授权。
2. 在 MongoDB 中为数据库创建用户和密码
mongo localhost/admin -u admin -p 123456 # 以管理员身份登录
use test # 进入到需要设置密码的数据库
db.createUser({user:"test", pwd:"123456", roles:[{role:"dbOwner", db:"test"}]}) # 为 test 数据库创建用户
exit # 退出管理员身份登录
这里 test 是需要设置密码的数据库名称,test 是该数据库所对应的用户名,123456 是该用户对应的密码。roles:[{role:"dbOwner", db:"test"}] 表示该用户有 test 数据库的读写权限。
三、使用 MongoDB 身份验证
现在,如果没有身份验证,我们还可以像以前一样进入数据库:
mongo localhost/test # 进入 test 数据库
但是,如果我们想以刚刚设置的用户名和密码登录数据库,需要像下面这样进行:
mongo localhost/test -u test -p 123456 # 以 test 用户名和密码登录 test 数据库
至此,我们已经成功为 MongoDB 设置了密码,实现了数据库的身份验证。
四、修改 MongoDB 用户名和密码
如果需要修改 MongoDB 用户名和密码,可以执行以下步骤:
1. 以管理员身份登录
mongo localhost/admin -u admin -p 123456 # 以管理员身份登录
2. 进入刚才设置密码的数据库
use test # 进入到需要设置密码的数据库
db.changeUserPassword("test", "12345") # 修改用户密码
db.renameUser("test", "test_123") # 修改用户名
这里使用了 changeUserPassword 和 renameUser 两个命令,前者用于修改用户密码,后者用于修改用户名。
五、删除 MongoDB 用户
如果需要删除 MongoDB 用户,可以执行以下命令:
1. 以管理员身份登录
2. 进入刚才设置密码的数据库
use test # 进入到需要设置密码的数据库
db.dropUser("test_123") # 删除 test_123 用户
这里使用的是 dropUser 命令,用于删除指定用户。
六、总结
本文介绍了在 MongoDB 中为数据库设置密码的方法,包括生成管理员用户、为数据库创建用户和密码、使用 MongoDB 身份验证、修改 MongoDB 用户名和密码以及删除 MongoDB 用户的步骤。希望能够对大家有所帮助。