由于腾讯云的活动,我买下了腾讯云的服务器,本以为和阿里云无差别,于是就直接把所有文件搬到了腾讯云里面。
然而……没过两天,我居然被删库了!
一查才知道,是因为我的mongodb没有密码,任何人都能直接访问并修改我的数据库,就这样被删库了……之前写的文章啊。。
为mongodb添加密码
mogodb安装后并没有要求创建用户名密码,虽然这样方便上手,但其实并不安全,所以我们需要自己创建用户名。
-
首先要打开mongod(若未)
-
然后再打开mongo进入mongodb环境
进入到admin数据库,输入
use admin
-
创建超级用户,输入下列指令(user,pwd可以自定义)
db.createUser({user: 'root', pwd: '123456', roles: ['root']})
就会提醒你创建成功了
然后退出(ctrl + c)刚刚的mongod和mongo。由于我的数据库存放位置在
c:\data\db
,所以我通过以下指令来打开访问控制
mongod --dbpath c:\data\db --auth
同时也要重新打开mongo在mongo里使用admin,
use admin
,然后show collections
就会突然报错,如果没有之前的--auth
启动的话,并没有问题,所以这时候要输入刚刚创建的用户,db.auth('root','123456')
,如果返回1,则表示可以访问admin
这个数据库了。但并没有结束。我们还需要给其他库赋予权限。与
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