你需要一份在openEuler系統下安裝MongoDB的技術教程,我會按照環境準備→安裝部署→配置啓動→功能驗證的流程,提供詳細且可直接操作的步驟,同時覆蓋開源版MongoDB(社區版)的核心配置要點。

一、環境説明

  • 系統版本:openEuler 20.03/LTS/22.03(x86_64/ARM64均適用,下文以x86_64為例)
  • MongoDB版本:7.0(社區版,當前穩定版)
  • 前提條件:擁有root權限,服務器能訪問外網(或已準備MongoDB安裝包)

二、步驟1:環境準備與依賴配置

1.1 更新系統並安裝基礎依賴

# 切換到root用户(若已為root可跳過)
su root

# 更新系統包
dnf update -y

# 安裝基礎依賴(MongoDB運行所需)
dnf install -y wget net-tools libcurl openssl

1.2 配置MongoDB官方yum源

openEuler基於RPM包管理,直接使用MongoDB官方yum源更便捷:

# 創建MongoDB的yum源配置文件
vim /etc/yum.repos.d/mongodb-org-7.0.repo

將以下內容粘貼到文件中(適配openEuler的RHEL兼容架構):

[mongodb-org-7.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-7.0.asc

説明:如果是ARM64架構,將x86_64替換為aarch64即可。

三、步驟2:安裝MongoDB社區版

# 安裝MongoDB完整包(包含服務端、客户端、工具)
dnf install -y mongodb-org

# 驗證安裝版本(確認安裝成功)
mongod --version

安裝成功後,會輸出類似如下版本信息:

db version v7.0.8
Build Info: {
    "version": "7.0.8",
    "gitVersion": "xxx",
    "openSSLVersion": "OpenSSL 1.1.1k  25 Mar 2021",
    "modules": [],
    "allocator": "tcmalloc",
    "environment": {
        "distmod": "rhel8",
        "distarch": "x86_64",
        "target_arch": "x86_64"
    }
}

四、步驟3:MongoDB核心配置

3.1 創建數據和日誌目錄(默認目錄需手動創建)

# 創建數據存儲目錄
mkdir -p /var/lib/mongo
# 創建日誌存儲目錄
mkdir -p /var/log/mongodb
# 設置目錄權限為mongodb用户(安裝後自動創建的系統用户)
chown -R mongodb:mongodb /var/lib/mongo /var/log/mongodb
chmod -R 755 /var/lib/mongo /var/log/mongodb

3.2 修改MongoDB配置文件

MongoDB默認配置文件為/etc/mongod.conf,需調整關鍵配置以適配生產/測試環境:

vim /etc/mongod.conf

修改後的核心配置如下(保留註釋,關鍵項修改):

# 網絡配置
net:
  port: 27017  # 默認端口,可自定義
  bindIp: 0.0.0.0  # 允許所有IP訪問,測試環境用;生產環境改為具體IP

# 數據存儲
storage:
  dbPath: /var/lib/mongo  # 數據目錄,對應上面創建的路徑
  engine: wiredTiger  # 默認存儲引擎,高性能

# 日誌配置
systemLog:
  destination: file
  path: /var/log/mongodb/mongod.log  # 日誌文件路徑
  logAppend: true  # 日誌追加模式,不覆蓋舊日誌

# 進程管理
processManagement:
  fork: true  # 以守護進程方式運行
  pidFilePath: /var/run/mongodb/mongod.pid  # PID文件路徑

# 副本集/單節點配置(單節點無需配置replicaSet,註釋即可)
# replication:
#   replSetName: rs0

# 安全配置(測試環境可先關閉,生產環境必須開啓認證)
security:
  authorization: disabled  # 臨時關閉認證,後續可開啓

説明:生產環境需開啓authorization: enabled(認證),並創建管理員賬户。

五、步驟4:啓動MongoDB並設置開機自啓

# 啓動mongod服務
systemctl start mongod

# 設置開機自啓
systemctl enable mongod

# 查看服務狀態(確認是否active running)
systemctl status mongod

若狀態顯示active (running),説明服務啓動成功;若失敗,可查看日誌/var/log/mongodb/mongod.log定位問題。

(可選)關閉防火牆和SELinux(測試環境)

如果客户端無法連接MongoDB,可臨時關閉防火牆和SELinux(生產環境需配置規則,而非直接關閉):

# 臨時關閉防火牆
systemctl stop firewalld
systemctl disable firewalld

# 臨時關閉SELinux
setenforce 0
# 永久關閉SELinux(需重啓服務器)
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

六、步驟5:功能驗證與基礎操作

6.1 連接MongoDB客户端

# 本地連接(默認無認證)
mongo
# 或使用新的客户端命令(MongoDB 6.0+推薦)
mongosh

6.2 基礎操作示例(創建數據庫、集合、插入數據)

// 1. 創建/切換到test數據庫(MongoDB無顯式創建,首次寫入即創建)
use test

// 2. 創建集合並插入數據
db.user.insertOne({
    name: "openEuler",
    age: 5,
    platform: "openEuler 22.03"
})

// 3. 查詢數據
db.user.find()

// 4. 退出客户端
exit

執行後若能看到插入的文檔數據,説明MongoDB功能正常。

七、步驟6:生產環境必備配置(開啓認證)

測試環境完成後,生產環境需開啓用户認證,步驟如下:

# 1. 重新連接MongoDB
mongosh

# 2. 切換到admin數據庫(系統庫)
use admin

# 3. 創建管理員賬户(擁有所有權限)
db.createUser({
    user: "root",
    pwd: "MongoDB@123",  # 自定義強密碼
    roles: [{role: "root", db: "admin"}]
})

# 4. 退出客户端
exit

# 5. 修改配置文件開啓認證
vim /etc/mongod.conf
# 將security下的authorization改為enabled:
security:
  authorization: enabled

# 6. 重啓mongod服務使配置生效
systemctl restart mongod

# 7. 使用認證連接MongoDB
mongosh -u root -p MongoDB@123 --authenticationDatabase admin

八、常見問題解決

  1. 啓動失敗:提示端口被佔用
    查看端口占用:netstat -tulpn | grep 27017,殺死佔用進程或修改mongod.conf中的port配置。
  2. 權限不足:無法寫入數據/日誌
    重新設置目錄權限:chown -R mongodb:mongodb /var/lib/mongo /var/log/mongodb
  3. 外網無法連接
    確認bindIp0.0.0.0,且防火牆開放27017端口:firewall-cmd --add-port=27017/tcp --permanent && firewall-cmd --reload

總結

  1. 在openEuler下安裝MongoDB的核心步驟為:配置官方yum源→安裝包→創建數據/日誌目錄→修改配置→啓動服務。
  2. 測試環境可臨時關閉認證和防火牆,生產環境必須開啓用户認證、限制IP訪問並配置防火牆規則。
  3. 若遇到啓動或連接問題,優先查看MongoDB日誌文件/var/log/mongodb/mongod.log定位原因。