MongoDB 8.x 制作一键部署安装包文档分享(Linux / Windows )
目录
MongoDB 8.x 一键部署文档(Windows 版)
环境要求与目录结构
.env.bat 内容示例
一键安装脚本 install_mongo8.bat
编辑
init_user.js 示例
验证部署
常用命令
常见问题与排查
MongoDB 8.x 一键部署脚本(Linux 版 基于centos7.9)
依赖包说明与兼容性问题解决
安装 compat-openssl10 的目的
解决方式
验证方式
.env 示例
common.sh 示例(读取/更新配置文件通用函数)
脚本说明
然后你可以把整个文件打包为tar.gz,以下为安装示例
linux验证命令
MongoDB 8.x 一键部署文档(Windows 版)
MongoDB下载地址:https://www.mongodb.com/try/download/community

环境要求与目录结构
建议目录布局如下(根路径为 D:\mongodb):
D:\└─ mongodb\├─ bin\ # mongod.exe / mongosh.exe 等├─ data\db\ # 数据文件(脚本自动创建)├─ logs\ # 日志文件(脚本自动创建)├─ VC_redist.x64.exe # 可选:Visual C++运行库安装包├─ .env.bat # 环境变量定义├─ init_user.js # 初始化脚本(创建 test 用户与样例数据)└─ install_mongo8.bat # 一键安装脚本

运行环境要求:
-
操作系统:Windows 10 / 11(以管理员身份运行 CMD)
-
MongoDB:官方 8.x 解压版(免安装)
-
文件编码:所有
.bat文件保存为 UTF-8 无 BOM
.env.bat 内容示例
放置于同目录:
@echo offset "CURRENT_DIR=%cd%"
echo BASEDIR: "%CURRENT_DIR%"
若未提供
.env.bat,脚本会自动使用当前脚本所在目录作为根目录。
一键安装脚本 install_mongo8.bat
该脚本用于自动安装 MongoDB 服务、创建管理员账户、执行初始化脚本并启用认证模式。
@echo off
setlocal enabledelayedexpansion
chcp 65001 > nul:: 初始化路径
cd /d %~dp0
call .env.bat
if "%CURRENT_DIR%"=="" set "CURRENT_DIR=%~dp0"
set "MONGO_ROOT=%CURRENT_DIR%"
set "DATA_PATH=!MONGO_ROOT!\data\db"
set "LOG_DIR=!MONGO_ROOT!\logs"
set "LOG_FILE=!LOG_DIR!\mongod.log"
set "SERVICE_NAME=ApsMongoDB"
set "BIND_IP=0.0.0.0"
set "PORT=27018"
set "ADMIN_USER=admin"
set "ADMIN_PWD=admin321"
set "TEMP_ADMIN_SCRIPT=!MONGO_ROOT!\_create_admin.js"
set "INIT_SCRIPT=!MONGO_ROOT!\init_user.js":: 安装依赖(可选)
if exist "!MONGO_ROOT!\VC_redist.x64.exe" (VC_redist.x64.exe /quiet /norestartecho 已安装 Windows Visual C++ 运行时库
):: 检查 MongoDB 可执行文件
if not exist "!MONGO_ROOT!\bin\mongod.exe" (echo 错误:未找到 mongod.exe,请检查 MONGO_ROOT 路径pauseexit /b 1
):: 创建数据与日志目录
if not exist "!DATA_PATH!" mkdir "!DATA_PATH!"
if not exist "!LOG_DIR!" mkdir "!LOG_DIR!"
if not exist "!LOG_FILE!" echo. > "!LOG_FILE!":: 安装服务(无认证)
echo 正在安装 MongoDB 服务(无认证模式)...
sc delete "!SERVICE_NAME!" >nul 2>&1
"!MONGO_ROOT!\bin\mongod.exe" --dbpath="!DATA_PATH!" --logpath="!LOG_FILE!" ^--install --serviceName "!SERVICE_NAME!" --bind_ip "!BIND_IP!" --port !PORT!net start "!SERVICE_NAME!"
if %errorlevel% neq 0 (echo 服务启动失败,请检查日志:!LOG_FILE!exit /b 1
)
ping 127.0.0.1 -n 5 > nul:: 创建管理员账户
echo 创建管理员账户中...
"!MONGO_ROOT!\bin\mongosh.exe" --norc "mongodb://127.0.0.1:!PORT!/admin" ^--eval "db.createUser({user:'!ADMIN_USER!', pwd:'!ADMIN_PWD!', roles:[{role:'root',db:'admin'}]})"
if %errorlevel% neq 0 (echo 管理员创建失败,请检查日志net stop "!SERVICE_NAME!"exit /b 1
)
echo 管理员账户已创建:!ADMIN_USER!:: 执行初始化脚本(可选)
if exist "!INIT_SCRIPT!" (echo 执行初始化脚本:!INIT_SCRIPT!"!MONGO_ROOT!\bin\mongosh.exe" "mongodb://127.0.0.1:!PORT!/admin" --file "!INIT_SCRIPT!"if %errorlevel% equ 0 (echo 初始化脚本执行成功) else (echo 初始化脚本执行失败,请检查 !INIT_SCRIPT!)
) else (echo 未找到初始化脚本:!INIT_SCRIPT!,跳过
):: 启用认证模式
echo 启用认证模式...
net stop "!SERVICE_NAME!"
ping 127.0.0.1 -n 3 > nul
sc delete "!SERVICE_NAME!" >nul 2>&1"!MONGO_ROOT!\bin\mongod.exe" --dbpath="!DATA_PATH!" --logpath="!LOG_FILE!" ^--install --serviceName "!SERVICE_NAME!" --bind_ip "!BIND_IP!" --port !PORT! --authnet start "!SERVICE_NAME!"
if %errorlevel% equ 0 (echo MongoDB 服务已启动(启用认证)
) else (echo 启动失败,请检查日志:!LOG_FILE!exit /b 1
)echo 安装与初始化完成
endlocal
init_user.js 示例
该脚本会在管理员创建完成后执行,用于创建 test 账户和插入样例数据。
// 切换到测试数据库
use testdb;// 创建普通测试用户
db.createUser({user: "test",pwd: "test123",roles: [{ role: "readWrite", db: "testdb" }]
});// 创建集合并插入一条样例数据
db.createCollection("samples");
db.samples.insertOne({message: "Hello MongoDB 8.x",created_at: new Date(),author: "system"
});print("初始化完成:test 用户创建成功,样例数据已插入 testdb.samples");
验证部署
命令行验证
"D:\mongodb\bin\mongosh.exe" "mongodb://admin:admin321@127.0.0.1:27018/admin?authSource=admin"
执行:
show users
应看到:
{ "_id": "admin.admin", "user": "admin", "roles": [ "root" ] }

Navicat / Compass 连接测试
| 参数 | 值 |
|---|---|
| 主机 | 127.0.0.1(或服务器IP) |
| 端口 | 27018 |
| 用户名 | test |
| 密码 | test123 |
| 验证数据库 | testdb |
连接后即可在 testdb → samples 中看到样例文档。
常用命令
net start ApsMongoDB :: 启动服务
net stop ApsMongoDB :: 停止服务
sc delete ApsMongoDB :: 删除服务
常见问题与排查
| 现象 | 原因 | 解决办法 |
|---|---|---|
| Authentication failed | 用户未创建或认证库错误 | 确认已创建 admin,并使用正确的 authSource=admin |
| 无法连接 | 服务未启动或端口占用 | 使用 net start ApsMongoDB 或修改端口 |
| usersInfo requires authentication | 启用了 auth 但尚未创建 admin | 重新以无认证模式启动,创建 admin 后再启用 auth |
'服务' is not recognized... | 文件编码或中文符号问题 | 使用英文括号与 UTF-8 无 BOM 保存脚本 |
这份文档即为最终的可直接使用版,你只需准备以下三个文件:
D:\mongodb\├─ .env.bat├─ install_mongo8.bat└─ init_user.js
执行 install_mongo8.bat 即可一键部署可用的 MongoDB 8.x 服务。
MongoDB 8.x 一键部署脚本(Linux 版 基于centos7.9)
解压MongoDB 8.x 然后在根目录新建文件:install_mongodb8.sh
权限:
chmod +x install_mongodb8.sh
执行:sudo ./install_mongodb8.sh

依赖包说明与兼容性问题解决
安装 compat-openssl10 的目的
MongoDB 官方提供的 Linux 二进制程序依赖 OpenSSL 1.0.2(libssl.so.10 / libcrypto.so.10)。
但在 RHEL 8 / CentOS 8 / RockyLinux / AlmaLinux 等系统中,默认版本是 OpenSSL 1.1 或 3.x,系统中已不再包含这些旧版库。
因此,如果直接运行 MongoDB,可出现以下错误:
error while loading shared libraries: libssl.so.10: cannot open shared object file
解决方式
安装系统兼容包:
compat-openssl10-1.0.2o-4.el8_6.x86_64.rpm
该包的作用是补充旧版 OpenSSL 运行库,使 MongoDB 能正常启动。
验证方式
执行:
ldd /opt/mongodb/bin/mongod | grep ssl
若输出中能找到:
libssl.so.10 => /usr/lib64/libssl.so.10
libcrypto.so.10 => /usr/lib64/libcrypto.so.10
则表示兼容包安装成功。
简而言之:
compat-openssl10是 MongoDB 在 CentOS/RHEL 8 上必需的兼容运行库,用来解决 “找不到 libssl.so.10 / libcrypto.so.10” 的启动错误。
.env 示例
INSTALL_DIR=/opt/mongodb
PORT=27018
USR=admin
PWD=admin321
common.sh 示例(读取/更新配置文件通用函数)
#!/bin/bashget_env_var() {local file=$1local key=$2grep "^${key}=" "$file" | cut -d '=' -f2
}update_env_var() {local file=$1local key=$2local value=$3if grep -q "^${key}" "$file"; thensed -i "s#^${key}.*#${key}=${value}#g" "$file"elseecho "${key}=${value}" >> "$file"fi
}
脚本说明
| 功能 | 说明 |
|---|---|
| 环境参数读取 | 从 .env 文件读取安装路径、端口及账号密码 |
| 自动依赖安装 | 检查并安装 compat-openssl10 RPM 包 |
| MongoDB 配置 | 自动修改 mongodb.conf 的 dbpath、logpath、port |
| 用户创建 | 创建 admin、monitor、devmodel、devmodel_release、test 用户 |
| 样例数据 | 在 testdb.samples 中插入测试文档 |
| 启用认证 | 修改配置文件 auth = true |
| 开机自启 | 添加 @reboot cron 任务自动启动 MongoDB |
| 初始化脚本 | 支持自动执行 init_devmodel.js、init_yapidb.js(如存在) |
然后你可以把整个文件打包为tar.gz,以下为安装示例








linux验证命令
./bin/mongo "mongodb://test:test123456@127.0.0.1:27017/admin?authSource=admin"

