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 &

忘記密碼后的重置

正常啟動MongoDB,並進入控制台,刪除之前的用戶。

use admin 
db.system.users.find()
db.system.users.remove({})

接下來就可以重復創建用戶的操作了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM