实战--在centos中使用mongo

  对于菜鸟的我来说,要想做出一个产品,还是挺困难的。如果是一个小团队,你几乎要涉及产品的方方面面,如下是我在使用过程中遇到的一些问题。在产品的开发期间,都是摸着石头过河。就在前段时间mongodb由于没有设置密码访问,被黑客攻击了。因此腾讯云还发了邮件过来,好在是在产品开发阶段,于是乎要修好这些漏洞,便有了这一篇记录。
  腾讯云给出的一些博文链接:
  一场屠戮MongoDB的盛宴反思 | 超33000个数据库遭遇入侵勒索——freebuf
  MongoDB数据库勒索,中国受害者数量超乎想象

黑客留下的痕迹:
这里写图片描述
大概意思是:要交0.5个比特币要他指定的地址,然后会将你的数据归还给你。

关于比特币的大概认识:
下面一段摘自知乎的回答:(https://www.zhihu.com/question/22020816/answer/20073288)
按照传统理论,货币价格不但和数量有关,还和货币流通速度有关。
全球货币总量是60万亿美金,比特币总量是2100万,大约1฿=300万美金。
但是如果比特币流通速度提高一倍的话,同样的支付需求只需要1050万个就能够完成了,大致相当于比特币数量增加了一倍。这时候1฿=150万美金。

centos中命令行操作mongo

在已经开启mongo的前提下。在centos找到mongo,并且直接运行mongo则可以在centos中以命令行的方式操作mongo 例如:
如下是我的文件目录,如要使用,请修改成自己的目录:

./bin/mongo

带安全验证方式启动mongo

既然前面讲到遭受攻击,那么这里肯定是要以安全的方式启动mongo,即是要输入密码才能连接。
首先,以配置文件启动的话,参数都在配置文件里面了,这里贴出我的配置文件:

dbpath = /usr/local/***/mongodb/data/db

logpath = /usr/local/***/mongodb/logs/mongodb.log

port = 27017

fork = true

logappend = true
#添加验证
auth = true

rest = true

如下是我的文件目录,如要使用,请修改成自己的文件目录:

(以配置文件启动mongo)
./bin/mongod --config /usr/local/***/mongodb/bin/mongodb.conf       
(直接命令行启动mongo)
./bin/mongod --dbpath /usr/local/***/mongodb/data/db  --logpath /usr/local/***/mongodb/logs/mongdb.log --auth   

关闭mongo

正确的关闭方法:

killall mongod

错误的关闭方法:

kill -9 进程号

如果使用了错误的关闭方法(包括异常关机,和kill -9),通常会出现如下错误:

ERROR: child process failed, exited with error number 48

解决方案:
在 ./mongodb/bin/data 目录下找到mongod.lock (一般会在你的data目录下),删除mongod.lock:
rm mongod.lock
在关闭mongod的情况下,再正常启动mongod,则不会出现上面的错误。

下面一段文字是摘自(http://www.cnblogs.com/joshua317/articles/5190385.html)
warning:千万不能使用kill -9 ,因为MongoDB使用mmap方式进行数据文件管理,也就是说写操作基本是在内存中进行,写操作会被每隔60秒(syncdelay设定)的flush到磁盘里。如果在这60秒内flush处于停止事情我们进行kill -9那么从上次flush之后的写入数据将会全部丢失。
如果在flush操作进行时执行kill -9则会造成文件混乱,可能导致数据全丢了,启动时加了repair也无法恢复。

连接mongo

我这边的后台是用nodejs的express框架写的,用了moongose,express-session和connect-mongo模块,那么连接方式应该给为如下方式:

mongodb://user:[email protected]/dbname

例如:我的
username:user_zone
password:123456
dbname:mydb
则如下:

mongodb://user_zone:[email protected]/mydb
阅读更多

更多精彩内容