隨筆 - 0, 文章 - 264, 評論 - 170, 引用 - 0
          數據加載中……

          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
          ^^^^ 用以下命令可以查看所有當前選擇的數據庫的用戶信息

          > db.system.users.find(); {"_id" : ObjectId("4d761dfc23e14f10be8563c5"), "user" : "root", "readOnly" : false, "pwd" : "6a921fa21bbcd22989efecbcb2340d17"}$ ./mongo > use projectx switched to db dbtest > db.aaaa.insert({aa:"xx"}); unauthorized

          ^^^^ 一旦在 admin 數據庫中添加了用戶,
          ^^^^ 那么對數據庫的操作必須進行認證,否則提示 unauthorized

          > db.auth("user1","1resu");
          1
          > db.aaaa.insert({aa:"xx"});
          > db.aaaa.find();
          {"_id" : ObjectId("4d7628638e6ce2eb56b45a41"), "aa" : "xx"}

          ^^^^ 進行用戶認證后就可以插入數據了

          > use projecty
          switched to db projecty
          > db.zzz.insert({aa:"xx"});
          unauthorized

          ^^^^ 由于用戶 user1 只作用于 projectx
          ^^^^ 并沒有對 projecty 的操作權限
          ^^^^ 而我們卻可以用 admin 庫中的用戶認證后進行創建,如下

          > use 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 的話
          ^^^^ 它可以進行任何操作,很危險

          > use projectx
          > 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 admin

          2)     增加或修改用戶密碼

          1db.addUser('name','pwd')

          3)     查看用戶列表

          1db.system.users.find()

          4)     用戶認證

          1db.auth('name','pwd')

          5)     刪除用戶

          1db.removeUser('name')

          6)     查看所有用戶

          1show users

          7)     查看所有數據庫

          1show dbs

          8)     查看所有的collection

          1show collections

          9)     查看各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、消息隊列等

          評論

          # re: MongoDB基本使用(注:轉載于http://hi.baidu.com/yangdaming1983/item/27f25de9f6588cc5bbf37d91)  回復  更多評論   

          初學mongodb,沒看到這個使用測試的具體方法,請問是用什么方式進行插入的
          2012-08-29 18:16 | 隱居士
          主站蜘蛛池模板: 永吉县| 慈利县| 社会| 平原县| 陵川县| 石河子市| 芦山县| 佳木斯市| 馆陶县| 平原县| 平山县| 东光县| 平定县| 克拉玛依市| 来安县| 武平县| 永康市| 盱眙县| 广宁县| 日照市| 冷水江市| 民县| 屏东县| 萨迦县| 当阳市| 故城县| 鹤庆县| 盘山县| 蒙自县| 安庆市| 同心县| 光泽县| 屯门区| 富裕县| 化州市| 大理市| 桓仁| 尚义县| 汉沽区| 大冶市| 蓝山县|