MongoDB基本管理命令 2

来源:互联网 发布:淘宝上学历认证代办 编辑:程序博客网 时间:2024/04/30 17:18

(四)安全管理

 

1、以安全认证模式启动
mongod --auth --dbpath /usr/mongo/data --logfile/var/mongo.log
使用--auth选项启动mongod进程即可启用认证模式。
或者,也可以修改/etc/mongodb.conf,设置auth=true,重启mongod进程。
2、添加用户
db.addUser("admin", ",�3_kj~00Opoo0+\/")
添加数据库用户,添加成功,则显示结果如下所示:
[plain] viewplaincopy
  1.  
  2.         "user" "admin",  
  3.         "readOnly" false,  
  4.         "pwd" "995d2143e0bf79cba24b58b3e41852cd"  
  5.  
3、安全认证
db.auth("admin", ",�3_kj~00Opoo0+\/")
数据库安全认证。认证成功显示结果:
[plain] viewplaincopy
  1.  
  2.         "user" "admin",  
  3.         "readOnly" false,  
  4.         "pwd" "995d2143e0bf79cba24b58b3e41852cd"  
  5.  
如果是认证用户,执行某些命令,可以看到正确执行结果,如下所示:
[plain] viewplaincopy
  1. db.system.users.find()  
  2. "_id" ObjectId("4ef940a13c1fc4613425acc8"), "user" "admin", "readOnly" false, "pwd" "995d2143e0bf79cba24b58b3e41852cd"  
否则,认证失败,则执行相关命令会提示错误:
[plain] viewplaincopy
  1. db.system.users.find()  
  2. error:  
  3.         "$err" "unauthorized db:admin lock type:-1 client:127.0.0.1", "code" 10057  
  4.  
4、为数据库写数据(同步到磁盘)加锁
db.runCommand({fsync:1,lock:1})
说明:
该操作已经对数据库上锁,不允许执行写数据操作,一般在执行数据库备份时有用。执行命令,结果示例如下:
[plain] viewplaincopy
  1.  
  2.         "info" "now locked against writes, use db.$cmd.sys.unlock.findOne() to unlock",  
  3.         "ok"  
  4.  
5、查看当前锁状态
db.currentOp()
说明:
查询结果如下所示:
[plain] viewplaincopy
  1.  
  2.         "inprog" ],  
  3.         "fsyncLock" 1,  
  4.         "info" "use db.$cmd.sys.unlock.findOne() to terminate the fsync write/snapshot lock"  
  5.  
其中,fsyncLock为1表示MongoDB的fsync进程(负责将写入改变同步到磁盘)不允许其他进程执行写数据操作
6、解锁
use admin
db.$cmd.sys.unlock.findOne()
说明:
执行解锁,结果如下所示:
[plain] viewplaincopy
  1. "ok" 1, "info" "unlock requested"  
可以执行命令查看锁状态:
db.currentOp()
状态信息如下:
[plain] viewplaincopy
  1. "inprog"  
说明当前没有锁,可以执行写数据操作。

(五)数据备份、恢复与迁移管理


1、备份全部数据库
mkdir testbak
cd testbak
mongodump
说明:默认备份目录及数据文件格式为./dump/[databasename]/[collectionname].bson
2、备份指定数据库
mongodump -d pagedb
说明:备份数据库pagedb中的数据。
3、备份一个数据库中的某个集合
mongodump -d pagedb -c page
说明:备份数据库pagedb的page集合。
4、恢复全部数据库
cd testbak
mongorestore --drop
说明:将备份的所有数据库恢复到数据库,--drop指定恢复数据之前删除原来数据库数据,否则会造成回复后的数据中数据重复。
5、恢复某个数据库的数据
cd testbak
mongorestore -d pagedb --drop
说明:将备份的pagedb的数据恢复到数据库。
6、恢复某个数据库的某个集合的数据
cd testbak
mongorestore -d pagedb -c page --drop
说明:将备份的pagedb的的page集合的数据恢复到数据库。
7、向MongoDB导入数据
mongoimport -d pagedb -c page --type csv --headerline --drop <csvORtsvFile.csv
说明:将文件csvORtsvFile.csv的数据导入到pagedb数据库的page集合中,使用cvs或tsv文件的列名作为集合的列名。需要注意的是,使用--headerline选项时,只支持csv和tsv文件。
--type支持的类型有三个:csv、tsv、json
其他各个选项的使用,可以查看帮助:
[plain] viewplaincopy
  1. mongoimport --help  
  2. options:  
  3.   --help                  produce help message  
  4.   -v --verbose        be more verbose (include multiple times for more  
  5.                           verbosity e.g. -vvvvv)  
  6.   -h --host arg       mongo host to connect to /s1,s2 for sets)  
  7.   --port arg              server port. Can also use --host hostname:port  
  8.   --ipv6                  enable IPv6 support (disabled by default)  
  9.   -u --username arg   username  
  10.   -p --password arg   password  
  11.   --dbpath arg            directly access mongod database files in the given  
  12.                           path, instead of connecting to mongod  server  
  13.                           needs to lock the data directory, so cannot be used  
  14.                           if mongod is currently accessing the same path  
  15.   --directoryperdb        if dbpath specified, each db is in separate  
  16.                           directory  
  17.   -d --db arg         database to use  
  18.   -c --collection arg collection to use (some commands)  
  19.   -f --fields arg     comma separated list of field names e.g. -f name,age  
  20.   --fieldFile arg         file with fields names per line  
  21.   --ignoreBlanks          if given, empty fields in csv and tsv will be ignored  
  22.   --type arg              type of file to import.  default: json (json,csv,tsv)  
  23.   --file arg              file to import from; if not specified stdin is used  
  24.   --drop                  drop collection first  
  25.   --headerline            CSV,TSV only use first line as headers  
  26.   --upsert                insert or update objects that already exist  
  27.   --upsertFields arg      comma-separated fields for the query part of the  
  28.                           upsert. You should make sure this is indexed  
  29.   --stopOnError           stop importing at first error rather than continuing  
  30.   --jsonArray             load json array, not one item per line. Currently  
  31.                           limited to 4MB.  
8、从向MongoDB导出数据
mongoexport -d pagedb -c page -q {} -f_id,title,url,spiderName,pubDate --csv > pages.csv
说明:将pagedb数据库中page集合的数据导出到pages.csv文件,其中各选项含义:
-f 指定cvs列名为_id,title,url,spiderName,pubDate
-q 指定查询条件
其他各个选项的使用,可以查看帮助:
[plain] viewplaincopy
  1. mongoexport --help  
  2. options:  
  3.   --help                  produce help message  
  4.   -v --verbose        be more verbose (include multiple times for more verbosity e.g. -vvvvv)  
  5.   -h --host arg       mongo host to connect to /s1,s2 for sets)  
  6.   --port arg              server port. Can also use --host hostname:port  
  7.   --ipv6                  enable IPv6 support (disabled by default)  
  8.   -u --username arg   username  
  9.   -p --password arg   password  
  10.   --dbpath arg            directly access mongod database files in the given  
  11.                           path, instead of connecting to mongod  server  
  12.                           needs to lock the data directory, so cannot be used  
  13.                           if mongod is currently accessing the same path  
  14.   --directoryperdb        if dbpath specified, each db is in separate directory  
  15.   -d --db arg         database to use  
  16.   -c --collection arg collection to use (some commands)  
  17.   -f --fields arg     comma separated list of field names e.g. -f name,age  
  18.   --fieldFile arg         file with fields names per line  
  19.   -q --query arg      query filter, as JSON string  
  20.   --csv                   export to csv instead of json  
  21.   -o --out arg        output file; if not specified, stdout is used  
  22.   --jsonArray             output to json array rather than one object per line  
注意:
如果上面的选项-q指定一个查询条件,需要使用单引号括起来,如下所示:
[plain] viewplaincopy
  1. mongoexport -d page -c Article -q '{"spiderName": "mafengwoSpider"}' -f _id,title,content,images,publishDate,spiderName,url --jsonArray mafengwoArticle.txt  
否则,就会出现下面的错误:
[plain] viewplaincopy
  1. ERROR: too many positional options  

(六)远程连接管理


1、基于mongo实现远程连接
[plain] viewplaincopy
  1. mongo -u admin -p admin 192.168.0.197:27017/pagedb  
通过mongo实现连接,可以非常灵活的选择参数选项,参看命令帮助,如下所示:
[plain] viewplaincopy
  1. mongo --help  
  2. MongoDB shell version: 1.8.3  
  3. usage: mongo [options] [db address] [file names (ending in .js)]  
  4. db address can be:  
  5.   foo                   foo database on local machine  
  6.   192.169.0.5/foo       foo database on 192.168.0.5 machine  
  7.   192.169.0.5:9999/foo  foo database on 192.168.0.5 machine on port 9999  
  8. options:  
  9.   --shell               run the shell after executing files  
  10.   --nodb                don't connect to mongod on startup no 'db address'   
  11.                         arg expected  
  12.   --quiet               be less chatty  
  13.   --port arg            port to connect to  
  14.   --host arg            server to connect to  
  15.   --eval arg            evaluate javascript  
  16.   -u --username arg username for authentication  
  17.   -p --password arg password for authentication  
  18.   -h --help         show this usage information  
  19.   --version             show version information  
  20.   --verbose             increase verbosity  
  21.   --ipv6                enable IPv6 support (disabled by default)  
2、基于MongoDB支持的javascript实现远程连接
当你已经连接到一个远程的MongoDB数据库服务器(例如,通过mongo连接到192.168.0.184),现在想要在这个会话中连接另一个远程的数据库服务器(192.168.0.197),可以执行如下命令:
[plain] viewplaincopy
  1. var new Mongo('192.168.0.197:27017')  
  2. var ydb x.getDB('pagedb');  
  3. use ydb  
  4. switched to db ydb  
  5. db  
  6. ydb  
  7. ydb.page.findOne()  
  8.  
  9.         "_id" ObjectId("4eded6a5bf3bfa0014000003"),  
  10.         "content" "巴黎是浪漫的城市,可是...",  
  11.         "pubdate" "2006-03-19",  
  12.         "title" "巴黎:从布鲁塞尔赶到巴黎",  
  13.         "url" "http://france.bytravel.cn/Scenery/528/cblsegdbl.html"  
  14.  
上述通过MongoDB提供的JavaScript脚本,实现对另一个远程数据库服务器进行连接,操作指定数据库pagedb的page集合。
如果启用了安全认证模式,可以在获取数据库连接实例时,指定认证账号,例如:
[plain] viewplaincopy
  1. var new Mongo('192.168.0.197:27017')  
  2. var ydb x.getDB('pagedb', 'shirdrn', '(jkfFS$343$_\=\,.F@3');  
  3. use ydb  
  4. switched to db ydb 
原创粉丝点击