安裝
-
下載MongoDB社區版
https://www.mongodb.com/try/download/community
-
上傳至指定目錄,如:
/app/soft
-
解壓文件
tar -zxvf mongodb-linux-x86_64-rhel62-4.4.4.tgz
-
修改名字
mv mongodb-linux-x86_64-rhel62-4.4.4 MongoDB
-
在MongoDB目錄下創建數據目錄及日誌目錄
[root@oadev soft]# cd MongoDB/
[root@oadev MongoDB]# mkdir -p ./data/db
[root@oadev MongoDB]# mkdir ./log
-
在安裝目錄創建MongoDB配置文件
vi mongodb.conf
,內容如下:
systemLog:
#MongoDB發送所有日誌輸出的目標指定爲文件
destination: file
path: "/app/soft/MongoDB/log/mongodb.log"
logAppend: true
storage:
#mongod實例存儲其數據的目錄
dbPath: "/app/soft/MongoDB/data/db"
journal:
#啓用或禁用持久性日誌以確保數據文件保持有效和可恢復。
enabled: true
processManagement:
#啓用在後臺運行mongos或mongod進程的守護進程模式。
fork: true
net:
#服務實例綁定的IP,默認是localhost
bindIp: 0.0.0.0
port: 27017
配置文件如果內容不正確會導致mongodb服務起不起來,mongodb的配置文件要求k:v這種形式的:後面必須接空格並且文件中不能有tab縮進,必須是空格縮進
-
啓動MongoDB 進入bin目錄,執行以下命令
./mongod -f /app/soft/MongoDB/mongodb.conf
-
查看啓動結果
使用命令ps aux | grep mongod
驗證是否正常啓動
或者在bin目錄下執行./mongo
進入命令行界面 -
將mongdb添加進環境變量
使用命令編輯配置文件vim /etc/profile
,在最後加入MongoDB的配置export PATH=$PATH:/app/soft/MongoDB/bin
這樣在任何地方都可以通過mongo指令進入命令行界面了。
安全配置
通過上面的安裝MongoDB目前還處於裸奔狀態,我們必須給其配置上用戶密碼認證登錄。首先我們給MongoDB配置一個超級管理員,操作步驟如下:
配置超級管理員
-
創建管理員賬號 在任意目錄中輸入mongo進入命令行界面(之前已經添加過環境變量)
> use admin
switched to db admin
> db.createUser({user:"root",pwd:"xxxxxx",roles:[{role:"root",db:"admin"}]})
用戶添加成功會出現:Successfully added user和添加的用戶信息。
user : "用戶名",
pwd : "密碼”,
roles:指定用戶的角色,可以用一個空數組給新用戶設定空角色;在roles字段,可以指定內置角色和用戶定義的角色。
注意一點,帳號是跟着庫走的,所以在指定庫裏授權,必須也在指定庫裏驗證(auth)。
2. 開啓權限認證
退出mongodb命令行並修改配置文件mongodb.conf,在最後開啓權限認證
security:
authorization: enabled
-
重啓MongoDB,使權限認證生效
-
重新進入mongo命令行,此時可以正常進入,但是不能執行mongo命令,如執行
show dbs
沒有任何信息 -
使用賬號密碼登錄
> use admin
switched to db admin
> db.auth("root","xxxxxx")
或直接使用下面命令登錄
mongo admin -u root -p xxxxxx
添加數據庫用戶
我們除了需要設置數據庫的超級管理員以外,還可以給每個數據庫設置單獨的管理員。其只有操作單獨數據的一定權限。
> use accesslog
switched to db accesslog
> db.createUser({
user: 'accesslog', //用戶名
pwd: 'xxxxxx', //密碼
roles:[{
role: 'readWrite', //角色
db: 'accesslog' //數據庫
}]
})
權限相關命令
show users // 查看當前庫下的用戶
db.dropUser('accesslog') // 刪除用戶
db.updateUser('admin', {pwd: 'xxxxxx'}) // 修改用戶密碼
db.auth('admin', 'xxxxxx') // 密碼認證
MongoDB 數據庫默認角色
-
數據庫用戶角色:
read、readWrite
-
數據庫管理角色:
dbAdmin、dbOwner、userAdmin
-
集羣管理角色(admin):
clusterAdmin、clusterManager、clusterMonitor、hostManager
-
備份恢復角色(admin):
backup、restore
-
所有數據庫角色(admin):
readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、 dbAdminAnyDatabase
-
超級用戶角色(admin):
root
客戶端連接
這裏我們使用 Navicat Premium 15 作爲MongoDB客戶端工具,當然也可以使用其他的。
在驗證模式中選擇Password選項後出現用戶名密碼輸入框。
連接上後由於沒有集合數據,所以此時看不到集合內容,這裏我們先新建一個查詢並通過如下語句創建一條記錄
use accesslog;
db.gatelog.insert({
title: 'Hello,MongoDB',
by: 'JAVA日知錄',
url: 'http://www.javadaily.cn',
webchat: 'jianzh5'
});
執行完成後就能看到數據了。
以上,希望對你有所幫助!
本文分享自微信公衆號 - JAVA日知錄(javadaily)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。