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 &