ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

MongoDB Docker 部署 + 开启远程访问 + Navicat 连接完整指南

2026/9/5 5:45:08 拓冰建站 浏览量
MongoDB Docker 部署 + 开启远程访问 + Navicat 连接完整指南 MongoDB Docker 部署 开启远程访问 Navicat 连接完整指南本文记录在 Docker 中部署 MongoDB、创建远程访问账号、开放监听端口并最终用 Navicat 连接的全过程。全程 4 步即可落地适合新手照着做。整体流程flowchart TD A[① docker pull 拉取镜像] -- B[② docker run 启动容器初始化管理员账号 挂载数据卷] B -- C[③ mongosh 创建远程访问账号] C -- D[④ 开放监听 0.0.0.0 安全组放行 27017] D -- E[⑤ Navicat 远程连接认证数据库选择 admin]Step 1拉取并启动 MongoDB 容器执行以下命令会创建名为mongodb的容器并初始化一个管理员账号# 1. 拉取镜像 docker pull mongo # 2. 启动容器替换账号密码 docker run -d --name mongodb \ -p 27017:27017 \ -v /root/mongo_data:/data/db \ -e MONGO_INITDB_ROOT_USERNAMEadmin \ -e MONGO_INITDB_ROOT_PASSWORD你的密码 \ mongo --bind_ip_all参数说明参数作用-p 27017:27017将宿主机端口映射到容器端口供外部访问-v /root/mongo_data:/data/db挂载数据卷容器删除后数据不丢失-e MONGO_INITDB_ROOT_USERNAME / PASSWORD首次启动时初始化管理员账号和密码--bind_ip_all允许所有 IP 访问开启远程的关键写在容器启动参数里最省事注意MONGO_INITDB_ROOT_USERNAME和MONGO_INITDB_ROOT_PASSWORD必须替换为你自定义的账号和密码。Step 2进入容器创建访问账号# 进入容器 bash docker exec -it mongodb bash # 进入 MongoDB 命令行 mongosh # 切换到 admin 数据库 use admin # 使用 admin 账号认证返回 1 或 Ok 即认证成功 db.auth(admin, 你的密码)创建一个拥有读写权限的远程账号db.createUser({ user: myuser, pwd: 你的数据库用户密码, roles: [{ role: readWrite, db: test_db }] })退出 MongoDB 和容器exit # 退出 mongosh exit # 退出容器建议远程账号密码尽量设置得复杂一些并只授予最小权限如只读写某个库避免暴露公网后被脚本爆破。Step 3修改监听地址与放行端口远程连接要求 MongoDB 允许从0.0.0.0访问。方式一推荐启动时已加--bind_ip_all则跳过本步。方式二容器已按默认方式启动进容器改配置# 修改默认配置中的 bindIp 为 0.0.0.0 docker exec -it mongodb sh -c sed -i s/bindIp: 127.0.0.1/bindIp: 0.0.0.0/ /etc/mongod.conf.orig # 重启容器使配置生效 docker restart mongodb云服务器放行端口如果使用云服务器还需到云控制台安全组放行 TCP 27017 端口否则外网无法连接# 本机验证端口是否已通 telnet 服务器公网IP 27017Step 4使用 Navicat 连接打开 Navicat Premium新建 MongoDB 连接按以下参数填写配置项值主机服务器公网 IP端口27017Authentication认证方式SCRAM-SHA-256用户名 / 密码第 2 步创建的账号密码Authentication Database认证数据库admin必须选 admin否则连接失败填好后点击测试连接通过即可正常访问。补充说明内存占用2G 内存服务器在跑 MySQL 之后再跑 MongoDB 会比较吃力。遇到卡顿可以停止 MySQL 容器释放内存或给服务器增加 Swap 虚拟内存。连接超时排查先确认安全组 / 防火墙已放行 27017再用telnet 服务器IP 27017验证端口是否连通。常见问题现象原因与处理Navicat 提示认证失败认证数据库是否选了admin账号是否创建在正确的库下连接超时安全组 / 防火墙未放行 27017MongoDB 未监听0.0.0.0用docker logs mongodb查看启动日志提示权限不足db.createUser中roles的db字段是否写对了库名安全提醒把 27017 暴露到公网存在被扫描爆破的风险。生产环境建议配合强密码 最小权限账号 安全组来源 IP 白名单使用。