一、mongoDB启动配置详讲
1、启动项 mongod --help

    165651657.jpg

  基本配置参数网站:http://www.uspcat.com/forum.php?mod=viewthread&tid=7722&extra=page%3D1

  1.1、利用config配置文件来启动数据库改变端口为8888
  (1)mongodb.conf配置文件:
  dbpath=D:\Work\MongoDB\Data
  port=8888
  (2)mongodbConf.bat启动文件:(设置环境变量)
 mongod.exe --config mongodb.conf
  (3)启动mongo客户端shell文件:
 mongo 127.0.0.1:8888
2、 停止mongoDB服务
 2.1、Ctrl+C组合键可以关闭数据库
    165728196.jpg

 2.2、admin数据库命令关闭数据库,如下所示:
 > use admin
   switched to db admin
 > db.shutdownServer()
   Tue Aug 06 22:08:55.920 DBClientCursor::init call() failed
   server should be down...
   Tue Aug 06 22:08:55.930 trying reconnect to 127.0.0.1:8888
   Tue Aug 06 22:08:56.934 reconnect 127.0.0.1:8888 failed couldn't connect to server 127.0.0.1:8888
二、导出、导入、运行时备份和恢复
1、导出数据(中断其他操作)
 cmd命令:
 利用mongoexport命令导出:
  -d 指明要导出的数据库;
  -c 指明要导出的表;
  -o 指明要导出的文件名;
  -csv 指定导出的csv格式;
  -q 过滤导出
  --type <json|csv|tsv>
 1.1、把数据库foobar中的person文档集合导出
  默认端口(27017):mongoexport -d foobar -c person -o d:/person.json
 1.2、导出其它主机数据库的文档集合
  非默认端口(8888):mongoexport --host 127.0.0.1 --port 8888 -d foobar -c person -o d:/person.json
2、导入数据(中断其他操作)
    2.1、参考API:http://cn.docs.mongodb.org/manual/reference/mongoimport
    2.1、把person文件导入到foobar数据库中的person文档
 默认端口(27017):mongoimport --db foobar --collection person --file d:/person.json
 非默认端口(8888): mongoimport --host 127.0.0.1 --port 8888 --db foobar --collection person --file d:/person.json
3、热备份:
优点:数据库引擎无需离线。
缺点:不能保证数据完整性,操作时会降低mongodb性能。
(1)、运行时备份(mongodump)
 3.1.1、参考API:http://cn.docs.mongodb.org/manual/reference/mongodump
 3.1.2、导出127.0.0.1服务器下的8888下的foobar数据库
        mongodump --host 127.0.0.1:8888 -d foobar -o d:/foobar
(2)、运行时恢复(mongorestore)
 3.2.1、参考API:http://cn.docs.mongodb.org/manual/reference/mongorestore
 3.2.2、删除数据库foobar,用刚才导出的数据库文件恢复数据库
        mongorestore --host 127.0.0.1:8888 -d foobar -directoryperdb d:/foobar/foobar
4、冷备份(俗称”懒人备份“)
 mongoDB是文件数据库,这其实就可以用拷贝文件的方式进行备份。
优点:可以完全保证数据完整性,不影响数据库性能。
缺点:需要数据库引擎离线。
三、Fsync锁和数据修复
1、Fsync锁
1.1、mongoDB的简单结构,如下图所示:

    165521708.jpg

1.2、上锁和解锁
(1)、上锁:db.runCommand({fsync:1,lock:1});
(2)、解锁:db.currentOp();
2、数据修复
当停电等看不可逆转灾难来临的时候,由于mongodb的存储结构导致会产生垃圾数据。
在数据恢复以后,这些垃圾数据依然存在,这是数据库提供一个自我修复的能力。
使用起来很简单。示例如下:
db.repairDatabase();
四、用户管理和安全认证
1、添加用户
 1.1、为admin数据库添加root用户和foobar数据库的danny用户
  use admin
  db.addUser("uspcat","123");
  use foobar
  db.addUser("yunfengcheng","123"); //
  db.addUser("readonly","123456",true);//只读用户
2、启用用户
 db.auth("名称","密码");
3、安全检查() --auth
注意:
(1)只需要再重新启动服务器的时候,指定auth参数.就可以阻止客户端的访问和连接,如下:
 mongod --dbpath D:\Work\MongoDB\Data --rest --auth
(2)想要登录验证模块生效,必须在admin库中添加一个用户(root),同时要指定auth参数。
3.1、非foobar的用户是不能操作数据库的,如下图所示:

            165848602.jpg

3.2、启用自己的用户才能访问数据库,如下图所示:

            165930251.jpg

3.3、非admin数据库的用户不能使用数据库命令,如下图所示:

            170014282.jpg

3.4、admin数据库中的数据经过认证为管理员用户,如下图所示:

            170142185.jpg

4、用户删除操作
db.system.users.remove({user:"testuser"})

5、限制特定IP地址访问
这样可以避免来自公网上的恶意***。
MongDB可以指定对外服务的绑定,默认设置为空,即绑定在本机所有可用IP上,
对于商业系统,出于安全考虑,可以绑定内网,减少外网访问避免***。
只需要启动时加bind_ip即可.
     mongod --bind_ip 192.168.1.100    //启动mongodb时绑定ip192.168.1.100
此时客户端想访问192.168.1.100上的服务器,就需要显示地指定连接的IP地址是192.168.1.100。
     mongo 192.168.1.100