mongodb加密的总结

由于腾讯云的活动,我买下了腾讯云的服务器,本以为和阿里云无差别,于是就直接把所有文件搬到了腾讯云里面。
然而……没过两天,我居然被删库了!

麻蛋.png

一查才知道,是因为我的mongodb没有密码,任何人都能直接访问并修改我的数据库,就这样被删库了……之前写的文章啊。。

为mongodb添加密码

mogodb安装后并没有要求创建用户名密码,虽然这样方便上手,但其实并不安全,所以我们需要自己创建用户名。

  1. 首先要打开mongod(若未)


    image.png
  2. 然后再打开mongo进入mongodb环境


    image.png
  3. 进入到admin数据库,输入use admin

  4. 创建超级用户,输入下列指令(user,pwd可以自定义)
    db.createUser({user: 'root', pwd: '123456', roles: ['root']})
    就会提醒你创建成功了

    image.png

  5. 然后退出(ctrl + c)刚刚的mongod和mongo。由于我的数据库存放位置在c:\data\db,所以我通过以下指令来打开访问控制
    mongod --dbpath c:\data\db --auth
    同时也要重新打开mongo

  6. 在mongo里使用admin,use admin,然后show collections就会突然报错,如果没有之前的--auth启动的话,并没有问题,所以这时候要输入刚刚创建的用户,db.auth('root','123456'),如果返回1,则表示可以访问admin这个数据库了。

  7. 但并没有结束。我们还需要给其他库赋予权限。与admin一样,假如要添加blog一个账户,则可以进入blog,use blog
    输入以下指令,

db.createUser({
    user:'blog',
    pwd:'123456',
    roles:[
        {
            role:'readWrite',
            db:'blog'
        }
    ]
})

这里为blog添加了一个用户,权限是readWrite。现在就完成了blog库的权限管理。

关于node.js的mongoose库的用法

之前的连接数据库就是采用以下方式

mongoose.connect(
  "mongodb://localhost:27017/blog",
  err => {
    if (err) console.log(err);
    console.log("connected");
  }
);

如果像上面一样添加了权限的话,就需要改变以下了,设用户名密码是(root,123456)

mongoose.connect(
[+]  "mongodb://root:123456@localhost:27017/blog",
  err => {
    if (err) console.log(err);
    console.log("connected");
  }
);

注:生产环境使用mongodb://localhost:27017/blog,而实际环境需要改为mongodb://0.0.0.0:27017/blog

你可能感兴趣的:(mongodb加密的总结)