MongoDB基本使用(注:轉(zhuǎn)載于http://hi.baidu.com/yangdaming1983/item/27f25de9f6588cc5bbf37d91)
MongoDB基本使用
一、啟動:
./mongod --dbpath=/data/mongodb --port=27017 --logpath=/data/mongodb/logs &
mongod --dbpath=/data/mongodb --port 27017 --logpath /data/mongodb/logs --auth --bind_ip 127.0.0.1 &
連接已有的db:mongo 192.168.0.166:27017
查詢所有數(shù)據(jù)庫
show dbs 使用test數(shù)據(jù)庫use test 顯示test所有表(collections)show collections 查詢服務(wù)器狀態(tài)db.serverStatus() #只允許某ip訪問$ mongod --bind_ip 127.0.0.1
#指定服務(wù)端口
$ mongod --port 27017
#指定數(shù)據(jù)存放路徑
mongod.exe –port 11111 –dbpath E:\data\mongodb
綁定 IP 地址,只有本地才可以訪問:
mongod --bind_ip 127.0.0.1在設(shè)置其它的端口:mongod --bind_ip 127.0.0.1 --port28888添加用戶認(rèn)證:添加用戶認(rèn)證必須在啟動 mongod 服務(wù)時添加 --auth 參數(shù):
mongod --bind_ip 127.0.0.1 --port28888--auth注意所有用戶的認(rèn)證信息都保存在每一個數(shù)據(jù)庫的 system.users 集合中。例如:在數(shù)據(jù)庫 projectx 中(就是 use projectx 后)projectx.system.users 會保存所有用戶的信息(這里的用戶是數(shù)據(jù)庫用戶)。
在最初始的時候 mongodb 都默認(rèn)有一個 admin 數(shù)據(jù)庫(剛開始是空的),而 admin.system.users 中將會保存比在其它數(shù)據(jù)庫中設(shè)置的用戶權(quán)限跟大的用戶信息。
注 意:當(dāng) admin.system.users 中沒有添加任一一個用戶(即為空)時,即使 mongod 啟動時添加了 --auth 參數(shù),即使,在除 admin 數(shù)據(jù)庫中添加了用戶,此時不進(jìn)行任何認(rèn)證依然可以使用任何操作,知道你在 admin.system.users 中添加了一個用戶。
如下分別創(chuàng)建兩個用戶:
在 projectx 中創(chuàng)建用戶名為 user1 密碼為 1resu 的用戶,如下:
$ ./mongo> use projectx> db.addUser("user1","1resu");在 admin 中創(chuàng)建用戶名為 root 密碼為 toor 的用戶,如下:
$ ./mongo > use admin > db.addUser("root", "toor"); > db.auth("root", "toor"); 1^^^^ 如果認(rèn)證成功會顯示 1
^^^^ 用以下命令可以查看所有當(dāng)前選擇的數(shù)據(jù)庫的用戶信息
^^^^ 一旦在 admin 數(shù)據(jù)庫中添加了用戶,
^^^^ 那么對數(shù)據(jù)庫的操作必須進(jìn)行認(rèn)證,否則提示 unauthorized
1
> db.aaaa.insert({aa:"xx"});
> db.aaaa.find();
{"_id" : ObjectId("4d7628638e6ce2eb56b45a41"), "aa" : "xx"}
^^^^ 進(jìn)行用戶認(rèn)證后就可以插入數(shù)據(jù)了
> use projectyswitched to db projecty
> db.zzz.insert({aa:"xx"});
unauthorized
^^^^ 由于用戶 user1 只作用于 projectx
^^^^ 并沒有對 projecty 的操作權(quán)限
^^^^ 而我們卻可以用 admin 庫中的用戶認(rèn)證后進(jìn)行創(chuàng)建,如下
> db.auth("root","toor");
1
> use projecty
switched to db projecty
> db.zzz.insert({aa:"xx"});
> db.zzz.find();
{"_id" : ObjectId("4d7628638e6ce2eb56b45a41"), "aa" : "xx"}
^^^^ 用 admin 庫中的用戶認(rèn)證后就可以創(chuàng)建另一個數(shù)據(jù)庫了
^^^^ 所以說明 admin 數(shù)據(jù)庫中的權(quán)限很大,如果沒有指定 readonly 的話
^^^^ 它可以進(jìn)行任何操作,很危險
> db.addUser("user2","2resu", true);
{"user" : "user2", "readOnly" : true, "pwd" : "471e31e021a3656044ef3487ea90e0cf"}
^^^^ 當(dāng)一 user2 用戶認(rèn)證時,user2 只能對 projectx 進(jìn)行只讀操作。
刪除用戶
> use dbname (admin or 51cv ,etc)
> db.system.users.remove({user:"haha"})
或db.removeUser('name')
> db.system.users.find()
mongod dbname -u uname -p password
如:mongo mailaccess -u mailaccess -p
1) 進(jìn)入數(shù)據(jù)庫admin
1use admin2) 增加或修改用戶密碼
1db.addUser('name','pwd')3) 查看用戶列表
1db.system.users.find()4) 用戶認(rèn)證
1db.auth('name','pwd')5) 刪除用戶
1db.removeUser('name')6) 查看所有用戶
1show users7) 查看所有數(shù)據(jù)庫
1show dbs8) 查看所有的collection
1show collections9) 查看各collection的狀態(tài)
db.printCollectionStats()
10) 查看主從復(fù)制狀態(tài)
db.printReplicationInfo()
11) 修復(fù)數(shù)據(jù)庫
db.repairDatabase()
12) 設(shè)置記錄profiling,0=off 1=slow 2=all
db.setProfilingLevel(1)
13) 查看profiling
show profile
14) 拷貝數(shù)據(jù)庫
db.copyDatabase('mail_addr','mail_addr_tmp')
15) 刪除collection
db.mail_addr.drop()
16) 刪除當(dāng)前的數(shù)據(jù)庫
db.dropDatabase()
posted on 2012-08-21 21:41 小一敗涂地 閱讀(2092) 評論(1) 編輯 收藏 所屬分類: mongdb、redis、memcache、消息隊列等