MongoDB 初探

靜以致遠√團團發表於2015-09-21
安裝過程放在後面了

一、開啟Mongodb 密碼驗證功能
預設安裝完mongodb是不用密碼驗證的,直接輸入mongo就可以登入資料庫進行相關操作,設定引數auth=true啟動mongodb密碼驗證功能,開啟改功能步驟如下:
①、修改引數檔案auth=flase,並重啟mongodb
②、登入資料庫,建立管理員使用者(預設是沒有管理員賬戶的)
[root@mongodb ~] # mongo
> user admin
> db.createUser(  
  {  
    user: "admin",  
    pwd: "admin",  
    roles: [ { role: "root", db: "admin" } ]  
  }  

③、修改引數檔案auth=true,重啟資料庫,使用admin使用者登入資料庫
mongo 127.0.0.1:27017/admin(database) -u admin(username)  -p admin(password)
或者
[root@mongodb ~] # mongo
> use admin
> db.auth("admin","admin");

二、使用者許可權管理

建立user文件,定義了使用者的以下形式:
create
{ user: "<name>",
  pwd: "<cleartext password>",
  customData: { <any information> },
  roles: [
    { role: "<role>", db: "<database>" } | "<role>",
    ...
  ]
}

user文件欄位介紹:
user欄位,為新使用者的名字;
pwd欄位,使用者的密碼;
cusomData欄位,為任意內容,例如可以為使用者全名介紹;
roles欄位,指定使用者的角色,可以用一個空陣列給新使用者設定空角色;
在roles欄位,可以指定內建角色和使用者定義的角色。

1. 資料庫使用者角色:read、readWrite;
2. 資料庫管理角色:dbAdmin、dbOwner、userAdmin;
3. 叢集管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 備份恢復角色:backup、restore;
5. 所有資料庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超級使用者角色:root  
// 這裡還有幾個角色間接或直接提供了系統超級使用者的訪問(dbOwner 、userAdmin、userAdminAnyDatabase)
7. 內部角色:__system

示例:
db.createUser(  
  {  
    user: "admin1",  
    pwd: "admin1",  
    roles: [ 
                { role: "read", db: "mydb" }
              ]  
  }  


db.createUser(  
  {  
    user: "admin1",  
    pwd: "admin1",  
    roles: [ 
                { role: "dbAdmin", db: "admin" },
                { role: "backup", db: "admin" }
              ]  
  }  


查詢使用者資訊和刪除使用者
db.system.users.find();
db.system.users.remove({user:"pmsadapter"});

三、匯入匯出小結
匯出dbname下collectionname 表到 /home/area.dat
mongoexport -d dbname -c collectionname -o /home/area.dat
匯入
mongoimport -d dbname -c collectionname /home/area.dat

匯出iflashbuy_log資料庫/home/my_mongodb_dump
mongodump -d iflashbuy_log -o /home/my_mongodb_dump
恢復資料庫
mongorestore -d my_mongodb  /home/my_mongodb_dump

安裝過程配置

mongodb下載地址 />
解壓安裝包,並建立data和log目錄
[root@59-Mysql-Test ~]# tar zxvf mongodb-linux-x86_64-3.0.6
[root@59-Mysql-Test ~]# mv mongodb-linux-x86_64-3.0.6 /usr/local/mongodb 
[root@59-Mysql-Test ~]# mkdir /mongdb/data -p
[root@59-Mysql-Test ~]# mkdir /mongdb/log -p

[root@59-Mysql-Test ~]# cd /usr/local/mongodb/
[root@59-Mysql-Test mongodb]# pwd
/usr/local/mongodb

建立配置檔案
[root@59-Mysql-Test mongodb]# vi mongodb.cnf
port = 27017
logpath = /mongodb/log/mongodb59.log
logappend = true
dbpath = /mongodb/data
directoryperdb = true
auth = false

註冊服務linux

/lib/lsb/init-functions使定義在init-functions檔案中的所有shell函式在當前指令碼
[root@59-Mysql-Test bin]# yum install redhat-lsb

[root@59-Mysql-Test bin]# vi /etc/init.d/mongodb
#
#mongod - Startup script for mongod
#
# chkconfig: - 85 15
# description: Mongodb database.
# processname: mongod
# Source function library
. /etc/rc.d/init.d/functions
# things from mongod.conf get there by mongod reading it
# OPTIONS
OPTIONS="-f /usr/local/mongodb/mongodb.cnf"
#mongod
mongod="/usr/local/mongodb/bin/mongod"
lockfile=/var/lock/subsys/mongod
start()
{
  echo -n $"Starting mongod: "
  daemon $mongod $OPTIONS
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && touch $lockfile
}
 
stop()
{
  echo -n $"Stopping mongod: "
  killproc $mongod -QUIT
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && rm -f $lockfile
}
 
restart () {
        stop
        start
}
ulimit -n 12000
RETVAL=0
 
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart|reload|force-reload)
    restart
    ;;
  condrestart)
    [ -f $lockfile ] && restart || :
    ;;
  status)
    status $mongod
    RETVAL=$?
    ;;
  *)
    echo "Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"
    RETVAL=1
esac
exit $RETVAL
[root@59-Mysql-Test ~]# service mongodb start

或者不註冊服務,直接路徑去操作啟動也可以
[root@59-Mysql-Test ~]# cd mongodb-linux-x86_64-3.0.6/bin
[root@59-Mysql-Test bin]# ./mongod --dbpath=/mongodb/data --logpath=/mongodb/log/mongo45.log --logappend&
或者
[root@59-Mysql-Test bin]# ./mongod -f  /usr/local/mongodb/mongodb.cnf&

[root@59-Mysql-Test bin]# netstat -lanp  | grep 27017
tcp        0      0 0.0.0.0:27017               0.0.0.0:*                   LISTEN      22250/./mongod      
unix  2      [ ACC ]     STREAM     LISTENING     1935507 22250/./mongod      /tmp/mongodb-27017.sock

注意將註冊到開機啟動中
[root@59-Mysql-Test ~]# cat /etc/rc.local 
.
.
.
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.cnf

MongoDB連線工具推薦:
MongoChef   首推
NoSQL Manager for MongoDB
MongoVUE

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29320885/viewspace-1805437/,如需轉載,請註明出處,否則將追究法律責任。