1. 程式人生 > 實用技巧 >MongoDB - Mac上安裝和配置MongoDB

MongoDB - Mac上安裝和配置MongoDB

Mac上安裝和配置MongoDB

安裝MongoDB

官網地址:https://www.mongodb.com/try/download/community,下載本地版MongoDb,格式為tgz。

把解壓後的資料夾放到 /usr/local 下

執行

open -e .bash_profile

配置環境變數,檔案中加入

export PATH=${PATH}:/usr/local/mongodb-macos-x86_64-4.4.1/bin

儲存後關閉檔案,執行以下命令使環境變數生效

source .bash_profile

執行mongod -version ,出現如下資訊則證明安裝成功

建立資料儲存路徑

由於MongoDB的預設儲存路徑使根目錄下的 /data/db ,而這個資料夾並不會由MongoDB自動建立,所以需要我們手動建立資料夾。

但是Mac OS引入了系統完整性保護(SIP)機制,無法在/、/usr目錄下新建檔案,所以我們需要通過軟連線的方式建立MongoDB資料儲存資料夾。

新建/etc/synthetic.conf檔案:

sudo vim /etc/synthetic.conf

在檔案裡面新增目錄的對映,每一行都相當於建立一個軟連結,一共包含三列。第一列表示根目錄/下的目錄名,第二列為一個tab鍵\t(不能是空格),第三列為自己新建的目錄:

data    /Users/helios_fz/mongodb-data

上述配置相當於

ln -s /Users/helios_fz/mongodb-data /data

重啟Mac,會看到根目錄下多了一個/data目錄。

配置使用者許可權

先後臺啟動MongoDB

mongod &

再重新開啟一個終端,執行mongo。

MongoDB安裝好後第一次進入是不需要密碼的,也沒有任何使用者。現在需要建立一個帳號,該賬號需要有grant許可權,即:賬號管理的授權許可權。注意一點,帳號是跟著庫走的,所以要在指定的庫裡授權,也必須也在指定的庫裡驗證(auth)。

終端輸入 mongo 進入MongoDB控制檯,執行以下命令建立管理使用者:

use admin
db.createUser( {user: 
"admin",pwd: "admin",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]})

上述命令中,user是使用者名稱,pwd是密碼,roles是指定使用者的角色,可以用一個空陣列給新使用者設定空角色;在roles欄位,可以指定內建角色和使用者定義的角色。

role裡的角色可以選:

  • 資料庫使用者角色:read、readWrite;
  • 資料庫管理角色:dbAdmin、dbOwner、userAdmin;
  • 叢集管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
  • 備份恢復角色:backup、restore;
  • 所有資料庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  • 超級使用者角色:root(dbOwner 、userAdmin、userAdminAnyDatabase也間接或直接提供了系統超級使用者的訪問)
  • 內部角色:__system

角色具體解釋:

  • read:允許使用者讀取指定資料庫
  • readWrite:允許使用者讀寫指定資料庫
  • dbAdmin:允許使用者在指定資料庫中執行管理函式,如索引建立、刪除,檢視統計或訪問system.profile
  • userAdmin:允許使用者向system.users集合寫入,可以找指定資料庫裡建立、刪除和管理使用者
  • clusterAdmin:只在admin資料庫中可用,賦予使用者所有分片和複製集相關函式的管理許可權。
  • readAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的讀許可權
  • readWriteAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的讀寫許可權
  • userAdminAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的userAdmin許可權
  • dbAdminAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的dbAdmin許可權。
  • root:只在admin資料庫中可用。超級賬號,超級許可權

剛建立了 userAdminAnyDatabase 角色,用來管理使用者,可以通過這個角色來建立、刪除使用者。

建立使用者之後,重啟MongoDB。通過ps -ef | grep mongo 找到MongoDB程序號,然後"kill -9 程序號"關掉資料庫。

通過下列命令啟動MongoDB,開啟認證:

mongod --auth &

常用命令

show dbs  #顯示資料庫列表 
show collections  #顯示當前資料庫中的集合(類似關係資料庫中的表)
show users  #顯示使用者
use <db name>  #切換當前資料庫,如果資料庫不存在則建立資料庫。 
db.help()  #顯示資料庫操作命令,裡面有很多的命令 
db.foo.help()  #顯示集合操作命令,同樣有很多的命令,foo指的是當前資料庫下,一個叫foo的集合,並非真正意義上的命令 
db.foo.find()  #對於當前資料庫中的foo集合進行資料查詢(由於沒有條件,會列出所有資料) 
db.foo.find( { a : 1 } )  #對於當前資料庫中的foo集合進行查詢,條件是資料中有一個屬性叫a,且a的值為1
db.dropDatabase()  #刪除當前使用資料庫
db.cloneDatabase("127.0.0.1")   #將指定機器上的資料庫的資料克隆到當前資料庫
db.copyDatabase("mydb", "temp", "127.0.0.1")  #將本機的mydb的資料複製到temp資料庫中
db.repairDatabase()  #修復當前資料庫
db.getName()  #檢視當前使用的資料庫,也可以直接用db
db.stats()  #顯示當前db狀態
db.version()  #當前db版本
db.getMongo()  #檢視當前db的連結機器地址
db.serverStatus()  #檢視資料庫伺服器的狀態

MongoDB沒有建立資料庫的命令,如果你想建立一個“myTest”的資料庫,先執行use myTest命令,之後就做一些操作(如:db.createCollection(‘user’)),這樣就可以建立一個名叫“myTest”的資料庫。

其他配置

開啟外部訪問

mongod --bind_ip=0.0.0.0 &

開啟訪問認證

mongod --auth &