给MongoDB设置密码

如果你按照官网的教程,安装部署了MongoDB,并准备把它使用到生产环境中。那么恭喜你,踩到坑了。
任何人都可以直接连到你的数据库,并且可以任意操作。
如果你不想给黑客比特币来赎回你的数据库,给你的MongoDB设置密码吧!
以下以为Windows Server环境为例。
为了方便以后使用,先把MongoDB路径添加至PATH。

  1. win+Break
  2. 高级系统设置
  3. Alt+N环境变量
  4. Alt+S系统变量中找到PathAlt+I编辑
  5. End如果末尾没有;则加上(注意是英文的;
  6. 粘贴MongoDB路径点击确定,比如我当前的是C:\Program Files\MongoDB\Server\3.6\bin

接下来就可直接使用MongoDB shell了

  1. win+X,C打开cmd
  2. 键入mongo使用MongoDB shell
    成功则会显示对应的shell版本,并提示连接到数据库。
    不成功检查路径是否正确添加到path。
  3. use admin使用admin数据库来添加管理员
  4. db.createUser({user: 'root', pwd: 'COh&0%RM2X@pI84#', roles: ['root']})创建超级用户
    现在连接数据库就会需要输入密码了,我们可以为单独不同的数据库设置密码,供后端连接
  5. db.createUser({ user: 'clearaki', pwd: 'f$MYSZPh*qT6uw^D', roles: [{ role: 'dbOwner', db: 'student' }] })
  6. 移除之前配置的MongoDB服务mongod --remove
  7. mongod --config "C:\Program Files\MongoDB\Server\3.6\mongod.cfg" --auth --install安装需要验证的MongoDB服务
  8. net start MongoDB启动服务

服务启动后,我们测试一下

  1. 进入MongoDB shell
  2. use admin
  3. 使用show dbs提示验证失败
  4. db.auth('root','COh&0%RM2X@pI84#'),1则验证成功
  5. 使用show dbs正确显示数据库列表

在后端语言中使用时,连接字符串则变为
mongodb://clearaki:f$MYSZPh*qT6uw^D@mongodb.clearaki.com/student

附录

roles

角色定位角色说明行为
数据库用户read只读collStats
dbHash
dbStats
find
killCursors
listIndexes
listCollections
readWrite读写collStats
convertToCapped
createCollection
dbHash
dbStats
dropCollection
createIndex
dropIndex
find
insert
killCursors
listIndexes
listCollections
remove
renameCollectionSameDB
update
数据库管理员dbAdmin提供执行管理任务(如架构相关任务、索引、收集统计信息)的能力。此角色不会授予用户和角色管理权限。collStats
dbHash
dbStats
find
killCursors
listIndexes
listCollections
dropCollection and createCollection on system.profile only
userAdmin提供创建和修改当前数据库中角色和用户的能力。bypassDocumentValidation
collMod
collStats
compact
convertToCapped
createCollection
createIndex
dbStats
dropCollection
dropDatabase
dropIndex
enableProfiler
reIndex
renameCollectionSameDB
repairDatabase
storageDetails
validate
dbOwner可以在数据库上执行任何管理操作。readWrite + dbAdmin + userAdmin

摘自完整文档

常用命令

修改密码:db.changeUserPassword(username, password)
删除用户:db.dropUser(username)