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