在此博客中,我們討論了一些數據庫系統,其中最受歡迎的是MariaDB和MySQL,因為它們通常包含在Xampp或Lampp中。 這次我們要談的是 另一個系統是 MongoDB。
MongoDB是 面向開源文檔的NoSQL數據庫系統, 這是 專為實現高性能數據持久性而設計的現代文檔數據庫管理系統, 基於NoSQL技術的高可用性以及自動擴展。
MongoDB不會像在關係數據庫中那樣將數據保存在表中,而是將數據結構保存在文檔中,這是一種由字段和值對組成的數據結構(MongoDB文檔可與JSON對象媲美)。
由於它具有高性能和出色的可伸縮性,因此被用於構建需要功能強大,關鍵任務和高可用性數據庫的現代應用程序。
在Ubuntu上安裝MongoDB
要在我們的系統上安裝此數據庫系統, 我們只需要打開一個終端並在其中執行以下命令即可:
sudo apt install mongodb
安裝完成, MongoDB服務將通過systemd自動啟動 並且該過程將在端口27017上運行。您可以使用以下命令檢查其狀態:
sudo systemctl status mongodb
如果沒有,我們可以使用以下命令強制啟動:
sudo systemctl start mongodb
啟用與MongoDB的遠程連接
默認情況下,MongoDB數據庫系統使用端口27017,我們必須打開該端口 為了接受遠程連接,我們僅使用以下命令啟用它。
sudo ufw allow 27017
默認情況下,只能從本地地址27017訪問端口127.0.0.1。 要允許遠程連接到MongoDB,必須在文件中添加服務器的IP地址。 /etc/mongodb.conf
只需使用以下命令進行編輯:
sudo nano
我們可以看到類似以下內容:
bind_ip = 127.0.0.1, your_server_ip #port = 27,017
我們使用服務器中的數據進行編輯。
允許從任何地方訪問MongoDB,它提供了對數據庫中數據的無限制訪問。 因此,最好允許訪問MongoDB端口的特定於位置的默認IP地址。
sudo ufw allow from your_server_IP/32 to any port 27017 sudo ufw status
一旦完成,就足以重新啟動服務,以便在開始時加載新的更改,我們可以這樣做:
sudo systemctl restart mongodb
在MongoDB中使用密碼創建用戶
默認情況下,數據庫具有非常簡單的訪問權限,因此,為了加強這一點,我們可以使用密碼創建用戶。
MongoDB使用SCRAM身份驗證機制 默認情況下。 在系統上使用SCRAM可以根據用戶名,密碼和身份驗證數據庫驗證提供的用戶憑據。
只需使用以下命令啟動數據庫控制台:
Mongo
我們可以使用以下方法列出現有數據庫:
show dbs
我們可以創建一個允許我們管理用戶和功能的用戶 例如創建用戶,授予或撤消用戶角色,以及創建或修改海關角色。
只需輸入
use admin
然後使用以下命令創建用戶,我們以我們認為適當的訪問憑據替換用戶“ root”的名稱和密碼“ password”。
db.createUser({user:"root", pwd:"password", roles:[{role:"root", db:"admin"}]})
完成此操作後,我們必須啟用身份驗證方法 為此,我們將編輯以下文件:
sudo nano /lib/systemd/system/mongodb.service
我們將尋找下一行:
ExecStart=/usr/bin/mongod --unixSocketPrefix=${SOCKETPATH} --config ${CONF} $DAEMON_OPTS
和 編輯,使其如下所示:
ExecStart=/usr/bin/mongod --auth --unixSocketPrefix=${SOCKETPATH} --config ${CONF} $DAEMON_OPTS
現在 我們只是在數據庫中重啟
systemctl daemon-reload sudo systemctl restart mongodb sudo systemctl status mongodb
Y 我們使用以下方法測試身份驗證方法:
mongo -u "usuario" -p --authenticationDatabase "contraseña"
幫我解決這個錯誤。
2021-03-24T21:33:16.233 + 0000 E查詢[thread1]錯誤:listDatabases失敗:{
«確定»:0,
“ Errmsg”:“未經管理員授權執行命令{listDatabases:1.0,$ db:\” admin \“}”,
“代碼”:13
“ CodeName”:“未經授權”
}:
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:65:1
shellHelper.show@src/mongo/shell/utils.js:816:19
shellHelper@src/mongo/shell/utils.js:706:15
@(shellhelp2):1:1