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({})
接下來就可以重復創建用戶的操作了。
