MongoDB是什麼:
MongoDB是一個棉線文檔的開源NoSQL數據庫管理系統。
MongoDB是一個開源,跨平臺,面向文檔的數據庫管理系統。MongoDB是NoSQL(不僅是SQL)數據庫軟件。MongoDB使用帶有模式的文檔之類的JSON(JavaScript對象表示法)。MongoDB由MongoDB Inc開發,並根據SSPL(服務器端公共許可證)進行分發。
centos8中安裝MongoDB yum存儲庫:
1.在/etc/yum.repo.d目錄中創建一個回購文件,以在CentOS 8服務器中安裝MongoDB yum存儲庫。
vim /etc/yum.repos.d/mongodb-org-4.4.repo
在此文件中添加以下配置:
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
2.爲MongoDB存儲庫構建緩存。
dnf clean all
dnf makecache
dnf repolist
centos8中爲MongoDB設置資源限制:
我們需要根據MongoDB軟件的要求在centos8服務器中設置資源限制。
爲此,爲MongoDB穿件資源限制配置文件,如下:
vim /etc/security/limits.d/mongod.conf
並在其中添加以下資源限制:
mongod soft nproc 64000
mongod hard nproc 64000
mongod soft nofile 64000
mongod hard nofile 64000
在centos8上安裝MongoDB數據庫:
1.我們可以從新添加的yum存儲庫在centos 8服務器上安裝MongoDB:
dnf list -y mongodb-org
dnf -y install mongodb-org
2.啓用並啓動MongoDB數據庫服務。
systemctl enable --now mongod.service
3.啓動成功後,檢查MongoDB的服務狀態和端口監聽信息。
systemctl status mongod.service
netstat -anplt|grep mongod
centos8上爲MongoDB創建selinux策略:
1.如果您已將selinux配置爲強制模式,則必須爲MongoDB創建selinux策略。
檢查當前的selinux模式:
getenforce
2.我們需要checkpolicy命令來驗證自定義selinux策略,安裝checkpolicy。
dnf -y install checkpolicy
3.創建一個定製的selinux策略文件。
vim mongodb_cgroup_memory.te
在文件中添加以下指令:
module mongodb_cgroup_memory 1.0;
require {
type cgroup_t;
type mongod_t;
class dir search;
class file { getattr open read };
}
#============= mongod_t ==============
allow mongod_t cgroup_t:dir search;
allow mongod_t cgroup_t:file { getattr open read };
4.編譯並應用此selinux策略。
checkmodule -M -m -o mongodb_cgroup_memory.mod mongodb_cgroup_memory.te
semodule_package -o mongodb_cgroup_memory.pp -m mongodb_cgroup_memory.mod
semodule -i mongodb_cgroup_memory.pp
MongoDB中創建管理員用戶:
默認情況下,MongoDB服務器重未啓用訪問控制,因此任何人都可以訪問MongoDB服務器並執行管理操作。
所以我們需要創建一個admin用戶並在MongoDB服務器中啓用訪問控制。
連接MongoDB shell:
mongo
連接管理數據庫:
> use admin;
switched to db admin
>
創建管理員用戶:
> db.createUser(
... {
... user: "admin",
... pwd: "xu123",
... roles: [ { role: "userAdminAnyDatabase",db: "admin" } ]
... }
... )
列出MongoDB數據庫中所有用戶。
> show users
MongoDB服務器中啓用訪問控制:
最初,訪問控制在MongoDB服務器中被禁用。因此,任何具有centos 8服務器操作系統級訪問權限的用戶都可以連接到MongoDB實例並在數據庫上執行管理操作。這就是爲什麼我們能夠在上一步中創建管理員用戶而無需任何身份驗證的原因。
要爲MongoDB服務器啓用訪問控制,我們需要爲MongoDB.service編輯systemd單元文件。
vim /usr/lib/systemd/system/mongod.service
在此文件中找到以下行:
Environment="OPTIONS=-f /etc/mongod.conf"
將其替換成:
Environment="OPTIONS=--auth -f /etc/mongod.conf"
重載systemd並重新啓動MongoDB服務以更改應用
systemctl daemon-reload
systemctl restart mongod.service
要檢查訪問控制,連接MongoDB shell並執行一些管理命令
mongo
use admin
show users
這次“show user”命令引發身份驗證錯誤,它確認在我們的MongoDB服務器中已啓用訪問控制。
現在,以管理員用戶身份連接。
> db.auth("admin",passwordPrompt())
Enter password: ###輸入我們前面設置的是密碼
1
現在,執行相同的命令,以檢查其是否正常運行。
show user
已成功使用特權用戶執行命令“顯示用戶”。
MongoDB數據庫的訪問控制已啓用。
MongoDB數據庫和日誌目錄:
以下是兩個目錄,對MongoDB數據庫管理員來說非常重要。
/var/lib/mongo-數據目錄(默認)
/var/log/mongodb-日誌目錄(默認)
我們可以通過在/etc/mongodb.conf文件中設置以下參數來自定義以上目錄。
storage.dbPath-指定新的數據目錄路徑
systemLog.path-指定新的日誌文件路徑