1. 程式人生 > 其它 >linux 安裝配置MongoDB 5.0

linux 安裝配置MongoDB 5.0

概覽

參考文章
官方文件

系統 mongoDB 安裝方式
ubuntu 20 mongoDB 5.0.6 apt

需記憶的資訊

相關路徑

data log 配置檔案
/var/lib/mongodb /var/log/mongodb /etc/mongod.conf

常用命令

sudo systemctl start mongod
sudo systemctl stop mongod
sudo systemctl restart mongod
sudo systemctl status mongod
# 開啟啟動
sudo systemctl disable mongod
sudo systemctl enable mongod

安裝

流程

flowchart LR
    安裝 --> 建立使用者 --> 配置檔案裡開啟authorization --> 重啟mongod

安裝過程

sudo apt-get install gnupg
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
sudo apt-get install gnupg
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org

鎖定更新

echo "mongodb-org hold" | sudo dpkg --set-selections
echo "mongodb-org-database hold" | sudo dpkg --set-selections
echo "mongodb-org-server hold" | sudo dpkg --set-selections
echo "mongodb-org-shell hold" | sudo dpkg --set-selections
echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
echo "mongodb-org-tools hold" | sudo dpkg --set-selections

使用者驗證和許可權管理

參考文章

說明:
1. mongodb 分散式資料庫,使用者驗證(本文稱為client auth)和叢集成員間的驗證(本文稱為internal auth) internal auth 使用keyfiles kms之類的驗證,先不管它
2. 使用者是和庫繫結的,或者說使用者驗證的粒度是庫級別,而不是整個例項級別
3. 不同的庫下面可以有相同的使用者名稱
4. 一般建立一個root賬戶,再建立一些普通使用者做日常操作
5. 一般來說應用使用的使用者只需要readWrite角色即可

mongosh進入後

// 建立root賬戶
use admin
db.createUser({user: "root",pwd: "root",roles: [ { role: "root", db: "admin" } ]})
// 建立日常用的普通賬戶
use test
/* 具體建立資訊自行修改 */
db.createUser(
  {
    user: "xyz",
    pwd: "xyz123",
    roles: [ { role: "readWrite", db: "test" },
             { role: "read", db: "reporting" } ]
  }
)

如上,xyz使用者只能登入test/reporting資料庫,許可權為分佈讀寫/讀

接下來,只需開啟authorization,就可以登入了

sudo vim /etc/mongod.conf
# 修改後重啟
sudo systemctl restart mongod
#登入 localhost主機下的admin資料庫 
mongosh localhost/admin -u root -p
使用者角色

Built-In Roles(內建角色):
1. 資料庫使用者角色:read、readWrite;
2. 資料庫管理角色:dbAdmin、dbOwner、userAdmin;
3. 叢集管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 備份恢復角色:backup、restore;
5. 所有資料庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超級使用者角色:root
// 這裡還有幾個角色間接或直接提供了系統超級使用者的訪問(dbOwner 、userAdmin、userAdminAnyDatabase)
7. 內部角色:__system

使用者有關操作示例
use admin
//檢視當前庫內已有使用者
show users
//檢視當前庫內可用的roles,預設只有built-in roles
show roles
//建立使用者,roles可以使用當前庫內的角色,或者其他庫內的角色
db.createUser({user: "root",pwd: "root",roles: [ { role: "root", db: "admin" } ]})
//如何修改密碼
db.changeUserPassword('root','rootNew');
//已有使用者新增和解除built-in roles
db.grantRolesToUser('<username>', [{ role: '<built-in role>', db: 'admin' }])
db.revokeRolesFromUser( "<username>", [{ role: '<built-in role>', db: 'admin' }])
//刪除使用者命令如下,雖然所有庫的使用者資訊全存在admin的system.users中,刪使用者時還是要use <庫名>才能刪除
use db_name
db.dropUser("<username>")
exit
//退出

由於使用者驗證是庫級別的,切換db時有時需要驗證

db.auth('root','password')

配置檔案

需要修改的地方

net:
  bindIp: 0.0.0.0  #或者某個IP
#啟用 使用者驗證
security:
  authorization: enabled  # 網路上的auth: true 不行,坑死了

配置檔案的官方說明

寫法和網上找的老版mongoDB有區別,注意是 **YAML 格式 **
網路上講的 fork=true # 以建立子程序的方式執行

  1. 本質上是daemon mode,守護程序,沒有控制終端而無法與前臺互動。
  2. 寫法注意 processManagement.fork 寫在 processManagement下
  3. 目前我看來沒用,用了沒法互動,官方也沒預設沒推薦

其它工具

mongosh

舊的是 mongo (deprecated)
注意 這是 javascript的互動式終端,甚至可以執行命令
1+1

# (不指定其它資訊 自動進入test資料庫)
mongosh
mongosh的連線方式

參考文章

mongosh mongodb://username:password@hostname/dbname
#或者
mongosh hostname/dbname -u username -p password
# 帶引數 安裝模式
mongodb://localhost/?safe=true

安全模式連線
safe=true|false
true: 在執行更新操作之後,驅動都會發送getLastError命令來確保更新成功。(還要參考 wtimeoutMS).
false: 在每次更新之後,驅動不會發送getLastError來確保更新成功。

mongosh 的 Editor Mode

shell中編輯大段的程式碼不方便,因此可以使用mongosh的編輯器模式;

config.set( "editor", "vim" )
config.set( "editor", "nano" )
config.set("editor","code --wait") // code特殊必須加 --wait 
// 啟動編輯模式
edit
// 編輯變數 直接編輯[ ] 
let albums=[];
edit albums // 或者直接 edit let albums=[]

config.set('editor',null) // 取消編輯器設定

MongoDB for VSCode 外掛

視覺化管理 compass

wget https://downloads.mongodb.com/compass/mongodb-compass_1.30.1_amd64.deb
sudo dpkg -i mongodb-compass_1.30.1_amd64.deb

啟動compass

mongodb-compass

解除安裝MongoDB

sudo service mongod stop
sudo apt-get purge mongodb-org*
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb