1、mongoDB启动配置详讲
一、启动项 mongod --helpphp
基本配置参数网站:http://www.uspcat.com/forum.php?mod=viewthread&tid=7722&extra=page%3D1mongodb
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
二、 中止mongoDB服务
2.一、Ctrl+C组合键能够关闭数据库
shell
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
2、导出、导入、运行时备份和恢复
一、导出数据(中断其余操做)
cmd命令:
利用mongoexport命令导出:
-d 指明要导出的数据库;
-c 指明要导出的表;
-o 指明要导出的文件名;
-csv 指定导出的csv格式;
-q 过滤导出
--type <json|csv|tsv>
1.一、把数据库foobar中的person文档集合导出
默认端口(27017):mongoexport -d foobar -c person -o d:/person.json
1.二、导出其它主机数据库的文档集合
非默认端口(8888):mongoexport --host 127.0.0.1 --port 8888 -d foobar -c person -o d:/person.json
二、导入数据(中断其余操做)
2.一、参考API:http://cn.docs.mongodb.org/manual/reference/mongoimport
2.一、把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
三、热备份:
优势:数据库引擎无需离线。
缺点:不能保证数据完整性,操做时会下降mongodb性能。
(1)、运行时备份(mongodump)
3.1.一、参考API:http://cn.docs.mongodb.org/manual/reference/mongodump
3.1.二、导出127.0.0.1服务器下的8888下的foobar数据库
mongodump --host 127.0.0.1:8888 -d foobar -o d:/foobar
(2)、运行时恢复(mongorestore)
3.2.一、参考API:http://cn.docs.mongodb.org/manual/reference/mongorestore
3.2.二、删除数据库foobar,用刚才导出的数据库文件恢复数据库
mongorestore --host 127.0.0.1:8888 -d foobar -directoryperdb d:/foobar/foobar
四、冷备份(俗称”懒人备份“)
mongoDB是文件数据库,这其实就能够用拷贝文件的方式进行备份。
优势:能够彻底保证数据完整性,不影响数据库性能。
缺点:须要数据库引擎离线。
3、Fsync锁和数据修复
一、Fsync锁
1.一、mongoDB的简单结构,以下图所示:数据库
1.二、上锁和解锁
(1)、上锁:db.runCommand({fsync:1,lock:1});
(2)、解锁:db.currentOp();
二、数据修复
当停电等看不可逆转灾难来临的时候,因为mongodb的存储结构致使会产生垃圾数据。
在数据恢复之后,这些垃圾数据依然存在,这是数据库提供一个自我修复的能力。
使用起来很简单。示例以下:
db.repairDatabase();
4、用户管理和安全认证
一、添加用户
1.一、为admin数据库添加root用户和foobar数据库的danny用户
use admin
db.addUser("uspcat","123");
use foobar
db.addUser("yunfengcheng","123"); //
db.addUser("readonly","123456",true);//只读用户
二、启用用户
db.auth("名称","密码");
三、安全检查() --auth
注意:
(1)只须要再从新启动服务器的时候,指定auth参数.就能够阻止客户端的访问和链接,以下:
mongod --dbpath D:\Work\MongoDB\Data --rest --auth
(2)想要登陆验证模块生效,必须在admin库中添加一个用户(root),同时要指定auth参数。
3.一、非foobar的用户是不能操做数据库的,以下图所示:json
3.二、启用本身的用户才能访问数据库,以下图所示:安全
3.三、非admin数据库的用户不能使用数据库命令,以下图所示:服务器
3.四、admin数据库中的数据通过认证为管理员用户,以下图所示:ide
四、用户删除操做
db.system.users.remove({user:"testuser"})性能
五、限制特定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网站