美文网首页mongoDB
实战--在centos中使用mongo

实战--在centos中使用mongo

作者: zone7_ | 来源:发表于2017-03-02 22:23 被阅读116次

    对于菜鸟的我来说,要想做出一个产品,还是挺困难的。如果是一个小团队,你几乎要涉及产品的方方面面,如下是我在使用过程中遇到的一些问题。在产品的开发期间,都是摸着石头过河。就在前段时间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   
    

    查看 mongodb 是否启动成功

    lsof -i :27017
    

    关闭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 <pid>,因为MongoDB使用mmap方式进行数据文件管理,也就是说写操作基本是在内存中进行,写操作会被每隔60秒(syncdelay设定)的flush到磁盘里。如果在这60秒内flush处于停止事情我们进行kill -9那么从上次flush之后的写入数据将会全部丢失。
    如果在flush操作进行时执行kill -9则会造成文件混乱,可能导致数据全丢了,启动时加了repair也无法恢复。

    连接mongo

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

    mongodb://user:password@localhost/dbname
    

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

    mongodb://user_zone:123456@localhost/mydb
    

    相关文章

      网友评论

        本文标题:实战--在centos中使用mongo

        本文链接:https://www.haomeiwen.com/subject/mzokgttx.html