一、mongoDB启动配置详讲
1、启动项 mongod --help
基本配置参数网站: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组合键可以关闭数据库
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的简单结构,如下图所示:
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的用户是不能操作数据库的,如下图所示:
3.2、启用自己的用户才能访问数据库,如下图所示:
3.3、非admin数据库的用户不能使用数据库命令,如下图所示:
3.4、admin数据库中的数据经过认证为管理员用户,如下图所示:
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