簡介
MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫。由C++語言編寫。旨在為WEB應用提供可擴展的高性能數(shù)據(jù)存儲解決方案。
MongoDB是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品。
Mongodb安裝
下面安裝的是mongodb-3.6.7版本,linux系統(tǒng)使用的是Centos7
1、安裝包下載
進入mongodb官網(wǎng)下載地址https://www.mongodb.com/,點擊右上角 Try Free 按鈕進入下載頁下載需要的安裝包。

版本說明:
- 穩(wěn)定版本:previous release
- 最新版本:current release
- 開發(fā)版本(不建議使用):development release
下載說明:
- windows版本的下載:直接下載MIS的安裝包,下載后點擊即可安裝。
- 對于linux版本,下面使用的是在Centos7上安裝,因此選擇的是
Linux 64-bit legacy x64版本。
2、 windows 上安裝mongodb
windows版本的下載好后直接安裝就可以了,在安裝的時候如果需要更改安裝路徑(建議自己重新選個安裝路徑)記得選自定義安裝。
我們本地開發(fā)只需要安裝mongodb server就可以了,在選擇的時候需要注意,如果安裝路徑選擇沒有出現(xiàn)先點擊下一步再返回就出現(xiàn)了,在最后確認安裝的時候,下面有個MongoDB的工具,記得去掉勾選,那個工具不是太好用,建議使用其他的如Robo 3T。同時可以不用讓其安裝為服務,這樣我們可以使用下面腳本來啟動,關(guān)閉也很方便。
- 編寫配置文件
安裝好后,在安裝目錄下的bin目錄中創(chuàng)建一個mongodb的配置文件 mongodb.conf,并在里面寫入如下配置。(注意里面的路徑請寫自己的,同時記得提前將你寫的文件夾創(chuàng)建好,否則會啟動失?。?/p>
# 設置數(shù)據(jù)文件的存放目錄
dbpath = D:\devtools\MongoDB\data
# 設置數(shù)據(jù)文件的存放目錄
logpath = D:\devtools\MongoDB\data\logs\mongodb.log
# 設置端口號
port = 27017
# 設置為以守護進程的方式運行,即在后臺運行
#fork = true
# 關(guān)閉http接口,默認關(guān)閉27018端口訪問
#httpinterface = true
#權(quán)限啟用驗證
auth = false
#綁定IP,使其可以外網(wǎng)訪問
#bind_ip = 0.0.0.0
- 創(chuàng)建啟動腳本
在安裝目錄的bin目錄中創(chuàng)建一個txt文本文件,在里面寫入如下腳本
@echo off
title MongoDB服務
echo ########################################
echo # MongoDB服務啟動成功...
echo #
for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
set IP=%%a
)
echo # IP: %IP%
echo # 注意:關(guān)閉當前窗口即可停止MongoDB服務
echo ########################################
color 02
echo.
mongod -f mongodb.conf
color 04
echo.
echo ########################################
echo # MongoDB服務啟動失敗...
echo #
echo # 請查看日志文件中的錯誤提示
echo ########################################
pause
或者直接寫如下腳本:
mongod -f mongodb.conf
之后將文件后綴改為bat;現(xiàn)在點擊運行該文件就可以啟動mongodb數(shù)據(jù)庫了
腳本說明:其實只需要
mongod -f mongodb.conf這句命令就可以了,后面這個‘mongodb.conf’就是剛才創(chuàng)建的配置文件
3、 Centos7上安裝mongodb
-
安裝包解壓
tar -zxvf mongodb-linux-x86_64-3.6.7.tgz
重新命名,并將其移動到/home/soft/mongodb/mongodb-3.6.7目錄下,此目錄為自定義的。
mv mongodb-linux-x86_64-3.6.7 /home/soft/mongodb/mongodb-3.6.7
- 創(chuàng)建日志和數(shù)據(jù)存放文件夾
在/home/soft/mongodb/mongodb-3.6.7目錄下創(chuàng)建一個名為logs的文件夾和data/db的數(shù)據(jù)存放文件夾
mkdir logs
mkdir -p data/db
- 編寫配置文件
進入/home/soft/mongodb/mongodb-3.6.7目錄下的bin目錄,在里面創(chuàng)建一個名為mongodb.conf的文件
#數(shù)據(jù)文件存放目錄
dbpath = /home/soft/mongodb/mongodb-3.6.7/data/db
#日志文件存放目錄
logpath = /home/soft/mongodb/mongodb-3.6.7/logs/mongodb.log
#端口
port = 27017
#以守護進程的方式啟用,即后臺運行;默認false
fork = true
# 關(guān)閉web管理訪問,默認關(guān)閉27018端口訪問,這個是在prot端口上加1000
#httpinterface = true
#是否開啟權(quán)限驗證
auth = true
#綁定ip,讓其能夠通過外網(wǎng)訪問, 0.0.0.0代表所有
bind_ip = 0.0.0.0
- 編寫啟動和停止腳本
在mongodb的安裝目錄下的bin目錄下執(zhí)行如下操作
創(chuàng)建啟動腳本
vi start.sh
在腳本文件中寫入如下內(nèi)容:
./mongod -f mongodb.conf
創(chuàng)建停止腳本
vi stop.sh
在腳本文件中寫入如下內(nèi)容:
./mongod -f ./mongodb.conf --shutdown
注意:需要開啟外網(wǎng)訪問時,如果你使用的是阿里云的或騰訊云的服務器,且開啟了安全組功能,那么你還需要在安全組模塊中將你設置的端口開放。
4、 設置管理賬號
4.1 先將配置mongodb.conf配置文件中的fork參數(shù)設為false,auth的設置為false; 然后啟動mongo服務。
使用腳本啟動:
./start.sh
4.2 讓在另外一個管理窗口連接mongo
./mongo
4.3 創(chuàng)建用戶
a. 添加超管用戶(可以添加、更新、刪除用戶,以及數(shù)據(jù)庫授權(quán))
use admin
db.createUser(
{
user:"userAdmin",
pwd:"123456",
roles:[{
role:"userAdminAnyDatabase",
db:"admin"
}
]
}
);
退出登陸
quit
修改配置文件,將auth的設置為true,開啟權(quán)限驗證。停止mongo服務,重新啟動。再次登陸。
b. 添加普通用戶(為其他數(shù)據(jù)庫)
#使用demo數(shù)據(jù)庫
use demo
#添加用戶
db.createUser(
{
user:"demo",
pwd: "123456",
roles: [{ role: "readWrite", db: "demo"}]
}
)
此時會報權(quán)限認證的錯誤,使用如下命令進行權(quán)限認證
db.auth('userAdmin', '123456')
之后再次執(zhí)行添加用戶操作。
c. 添加超管用戶root
use admin
db.createUser(
{
user:"root",
pwd:"123456",
roles:[{
role:"root",
db:"admin"
}
]
}
);
其他命令
#進入admin數(shù)據(jù)庫
use admin
#進行權(quán)限認證
db.auth('userAdmin', '123456')
#查詢所有用戶
db.system.users.find()
#更新用戶
db.updateUser('demo',{user:'demo',pwd:'123456',roles:[{role:'read',db:'demo'}]})
#刪除用戶
db.dropUser('demo')
#創(chuàng)建數(shù)據(jù)庫
use 數(shù)據(jù)庫名
#顯示已有數(shù)據(jù)庫
show dbs
4.4 MongoDB數(shù)據(jù)庫角色
內(nèi)建的角色
| 名稱 | 說明 |
|---|---|
| 數(shù)據(jù)庫用戶角色 | read、readWrite |
| 數(shù)據(jù)庫管理角色 | dbAdmin、dbOwner、userAdmin |
| 集群管理角色 | clusterAdmin、clusterManager |
| 備份恢復角色 | backup、restore |
| 所有數(shù)據(jù)庫角色 | readAnyDatabase、readWriteAnyDatabase |
| 超級用戶角色 | root (這里還有幾個角色間接或直接提供了系統(tǒng)超級用戶的訪問[dbOwner 、userAdmin、userAdminAnyDatabase]) |
| 內(nèi)部角色 | __system |
角色說明:
| 名稱 | 說明 |
|---|---|
| Read | 允許用戶讀取指定數(shù)據(jù)庫 |
| readWrite | 允許用戶讀寫指定數(shù)據(jù)庫 |
| dbAdmin | 允許用戶在指定數(shù)據(jù)庫中執(zhí)行管理函數(shù),如索引創(chuàng)建、刪除,查看統(tǒng)計或訪問system.profile |
| userAdmin | 允許用戶向system.users集合寫入,可以找指定數(shù)據(jù)庫里創(chuàng)建、刪除和管理用戶 |
| clusterAdmin | 只在admin數(shù)據(jù)庫中可用,賦予用戶所有分片和復制集相關(guān)函數(shù)的管理權(quán)限。 |
| readAnyDatabase | 只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的讀權(quán)限 |
| readWriteAnyDatabase | 只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的讀寫權(quán)限 |
| userAdminAnyDatabase | 只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的userAdmin權(quán)限 |
| dbAdminAnyDatabase | 只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的dbAdmin權(quán)限。 |
| root | 只在admin數(shù)據(jù)庫中可用。超級賬號,超級權(quán)限 |
5、下載圖形化管理工具
這里推薦使用: Robo3T, 官網(wǎng)地址:https://robomongo.org;官網(wǎng)上有Robo 3T(免費的) 和Studio 3T(功能更全面,高級功能收費;可以免費體驗幾天,到期后重新安裝就又可以用了,導入導出數(shù)據(jù)時很方便);個人感覺Robo 3T的操作界面更清新些。