一、MongoDB安裝及配置
1.1、下載安裝程序
MongoDB提供了linux平臺上32位和64位的安裝包,你可以在官網下載安裝包。
下載地址:http://www.mongodb.org/downloads
下載完安裝包,并解壓 gz(以下演示的是 64 位 Linux上的安裝) 。
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.3.tgz # 下載
tar -zxvf mongodb-linux-x86_64-3.2.3.tgz # 解壓
mv mongodb-linux-x86_64-3.2.3/ /usr/local/mongodb # 將解壓包拷貝到指定目錄
MongoDB 的可執行文件位于 bin 目錄下,所以可以將其添加到 PATH 路徑中:
export PATH=<mongodb-install-directory>/bin:$PATH
1.2、創建數據庫目錄
MongoDB的數據存儲在/data/db目錄下,但是這個目錄在安裝過程不會自動創建,所以你需要手動創建data目錄,并在data目錄中創建db目錄。
以下實例中我們將data目錄創建于根目錄下(/)。
注意:/data/db 是 MongoDB 默認的啟動的數據庫路徑(-dbpath)。
mkdir -p /data/db
1.3、運行服務
可以通過mongo安裝目錄下bin目錄的mongod命令來啟動mongodb服務。
可以加上--path參數來指定服務啟動的端口,默認是27017;加上--dbpath參數指定數據庫文件所在的目錄,默認目錄在/data/db。
mongod --port 25000 --dbpath /data/db
1.4、后臺管理Shell
如果你需要進入MongoDB后臺管理,你需要先打開mongodb裝目錄的下的bin目錄,然后執行mongo命令文件。
MongoDB Shell是MongoDB自帶的交互式Javascript shell,用來對MongoDB進行操作和管理的交互式環境。
當你進入mongoDB后臺后,它默認會鏈接到 test 文檔(數據庫)。注意,如果你不是默認端口,請在mongo命令后面指定IP地址和端口號。
mongo 127.0.0.1:25000
1.5、Web用戶界面
MongoDB 提供了簡單的 HTTP 用戶界面。 如果你想啟用該功能,需要在啟動的時候指定參數 --rest 。
mongod --port 25000 --dbpath /data/db --rest
MongoDB 的 Web 界面訪問端口比服務的端口多1000。
如果你的MongoDB運行端口使用默認的25000,你可以在端口號為26000訪問web用戶界面,即地址為:http://localhost:26000。
1.6、在系統啟動時寫入環境變量
可以用vi打開/etc/profile文件,然后將剛才的環境變量設置命令寫到文件的尾部。
vi /etc/profile
# /etc/profile #
....
export PATH=<mongodb-install-directory>/bin:$PATH
1.7、在后臺運行服務
使用linux下的 nohub [command] & 命令,可以讓服務在后臺運行,這樣即使關掉終端服務也不會一起關掉。啟動服務之后如果要關掉終端,請使用linux的exit命令,而不要強制退出。
>nohup mongod --port 25000 --dbpath /data/db --rest --auth &
exit
為了避免MongoDB的服務在終端關掉后也一起關掉,可以使用--fork參數將服務設置為后臺運行模式。
mongod --port 25000 --dbpath /data/db -fork --logpath /var/log/mongodb.log --logappend
可以用--logpath參數指定日志的輸出路徑,并且在最后面添加上--logappend參數,以追加的方式創建日志防止把之前的日志刪除了。
1.8、停止運行中的服務
盡量不要用kill命令殺掉進程的方式停止服務,請進入Shell,用db.shutdownServer命令來關閉服務。
use admin
db.shutdownServer()
1.9、加入服務啟動項
打開/etc/rc.local文件
vi /etc/rc.local
將啟動服務的命令添加到文件尾部
#! /bin/sh
……
mongod --port 25000 --dbpath /data/db -fork --logpath /var/log/mongodb.log --logappend
1.10、使用配置文件啟動服務
如果覺得在服務后面帶著大量參數很不方便,可以使用配置文件來代替,只需要事先編寫好配置文件,然后在啟動服務的時候加上--config參數即可。
配置文件格式
port=25000
dbpath=/data/db
logpath=/var/log/mongodb.log
fork=true
logappend=true
shardsvr=truedirectoryperdb=true
auth=true
然后啟動服務,在--config參數后制定配置文件路徑
mongo --config /配置文件目錄/mongo.conf
二、安全性配置
MongoDB默認是在非安全性模式下運行的,這樣在生產環境下非常危險,所以建議還是開啟安全性開關,并分配相應的角色權限。在這里,我們會創建三個不同角色的用戶來管理數據庫,分別是admin、sa、dev三個用戶。admin用戶專門負責管理整個數據庫的用戶權限,但不具備業務數據管理的權限;sa用戶負責服務的管理,只有他有權限關閉服務;而dev用戶負責管理某個業務數據庫里面的數據,擁有該數據庫的數據讀寫權限。
2.1、添加系統用戶
先創建一個權限管理用戶admin。
use admin
db.createUser({
user: "admin",
pwd: "admin"
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})
如上所示,系統相關的權限配置要在admin庫上進行,MongoDB默認是沒有創建該數據庫的,而我們只要用use命令切換到該數據庫就可以了。接下來就調用db.createUser命令來創建用戶和設置密碼,并為他賦予userAdminAnyDatabase權限,這個權限代表該用戶有權管理所有用戶權限設置,另外這里還在權限設置里面指定了該用戶管理的數據庫為admin。
接下來創建系統服務管理用戶sa。
use admin
db.createUser({
user: "admin",
pwd: "admin"
roles: [ { role: "hostManager", db: "admin" } ]
})
和admin用戶的創建方法差不多,只不過賦予的權限是hostManager,該權限能夠監控服務的信息,以及進行關閉服務等操作。
2.2、在安全性模式下運行
創建完admin用戶后,就可以將服務切換到安全性模式。要切換到安全性模式,可以在啟動服務的時候加上--auth參數。
mongod --port 25000 --dbpath /data/db --rest --auth
然后打開Shell,并進行權限認證,用剛才的admin用戶,認證命令為db.auth("用戶名", "密碼")。
use admin
db.auth("admin", "admin");
之后就可以在Shell進行權限管理,也就是說可以創建和維護用戶信息了。
注意,由于admin只擁有userAdminAnyDatabase權限,所以無法進行一些非管理性質的操作。比如admin可以通過show users命令查詢當前MongoDB的用戶信息,但無法用show collections來查看數據庫的集合信息,也無法對這些集合進行任何讀寫操作。
2.3、創建業務數據庫及其用戶
創建一個名為app的庫用于存放業務數據,并為其創建一個用戶dev來負責管理數據庫里面的數據。dev用戶擁有app庫的讀寫權限。同樣,你應該先在Shell中用admin進行認證,然后在調用db.createUser命令創建用戶。
use admin
db.auth("admin", "admin")
use app
db.createUser({
user: "dev",
pwd: "dev",
roles: [ { role: "readWrite", db: "app" } ]
})
在這里,要創建dev用戶之前,先切換到app數據庫,然后再創建用戶,并為用戶賦予readWrite權限,并指定為app數據庫,該設定代表用戶擁有讀取app數據庫一般數據的權限。
權限設定完畢之后,再通過db.auth命令切換到dev用戶,就可以對app庫進行數據讀寫操作了。
use app
db.auth("dev", "dev")
三、安裝使用客戶端控制管理軟件
如果覺得使用MongoDB的Shell很麻煩,想使用諸如Navicat這樣的數據庫管理工具,那么可以使用Robomongo。
3.1、下載安裝程序
可以到Robomongo的官網下載,地址為https://robomongo.org/。
3.2、鏈接數據庫
打開Robomongo,打開菜單File->Connect,點擊Create按鈕打開Connection Settings界面,切換到Connection選項卡,填寫鏈接名稱(隨便填),數據庫地址和端口號,然后點擊Test按鈕測試連接是否連通,如果無法連通,請檢查一下服務器的防火墻設置等可能出現的情況。接下來,如果你的數據庫開啟了安全性模式,那么請切換到Authentication選項卡,勾上Perform authentication,數據庫不用填,填寫你的用戶名、密碼以及認證模式(如果設置的時候沒有特別指明的話可以不管,按照默認即可)。所有信息都填寫完畢之后點擊保存按鈕保存設置,回到MongoDB Connections界面,選擇剛才創建的數據庫連接,點擊連接按鈕即,如果一切正常就可以看到數據庫的信息和內容了。
四、在PHP下使用MongoDB
如果你想要在PHP下使用MongoDB的話,必須先安裝MongoDB的PHP擴展驅動
$ sudo pecl install mongo
使用php的pecl安裝命令必須保證網絡連接可用以及root權限。
安裝手冊
如果你想通過源碼來編譯擴展驅動。你必須手動編譯源碼包,這樣做的好是最新修正的bug包含在源碼包中。
你可以在Github上下載MongoDB PHP驅動包。訪問github網站然后搜索"mongo php driver"(下載地址:https://github.com/mongodb/mongo-php-driver),下載該源碼包,然后執行以下命令:
$ tar zxvf mongodb-mongodb-php-driver-<commit_id>.tar.gz
$ cd mongodb-mongodb-php-driver-<commit_id>
$ phpize
$ ./configure
$ sudo make install
如果你的php是自己編譯的,則安裝方法如下(假設是編譯在/usr/local/php目錄中):
$ tar zxvf mongodb-mongodb-php-driver-<commit_id>.tar.gz
$ cd mongodb-mongodb-php-driver-<commit_id>
$ /usr/local/php/bin/phpize$ ./configure --with-php-config=/usr/local/php/bin/php-config
$ sudo make install
執行以上命令后,你需要修改php.ini文件,在php.ini文件中添加mongo配置,配置如下:
extension=mongo.so
修改完配置之后,再重啟一下apache服務就完成擴展驅動的安裝了
service httpd restart