Docker安装MongoDB
使用Docker安装MongoDB是一个相对简单的过程。以下是基本步骤的概述,你可以根据这些步骤进行操作:
-
安装Docker:如果你的系统尚未安装Docker,你需要先进行安装。可以参考 中的步骤更新源、安装Docker以及设置镜像加速。
-
搜索MongoDB镜像:使用命令
docker search mongo
来查找可用的MongoDB镜像版本 。 -
拉取MongoDB镜像:通过命令
docker pull mongo
来拉取最新的MongoDB镜像 。 -
创建挂载目录:在宿主机上创建目录以供MongoDB数据卷挂载使用。例如,你可以创建
/docker-software/mongodb/{data,logs}
目录并设置适当的权限 ,或者/root/mongo/{data,conf,backup}
目录 。 -
运行MongoDB容器:使用
docker run
命令来启动MongoDB容器,并映射端口以及挂载数据卷。例如:docker run --name mongodb -p 27017:27017 -d -v /root/mongo/data:/data/db mongo --auth 这个命令会创建一个名为
mongodb
的容器,将容器的27017端口映射到宿主机的27017端口,并以--auth
参数启动MongoDB,启用身份验证 。 -
连接MongoDB:启动容器后,你可以使用
docker exec
命令连接到MongoDB实例。例如:docker exec -it mongodb mongosh 这将打开MongoDB Shell,你可以使用
use admin
来选择admin数据库,并根据需要创建用户或执行其他操作 。 -
配置MongoDB:根据需要对MongoDB进行配置,比如设置认证用户等 。
要创建一个可以访问所有数据库的用户,你需要为该用户分配一个具有足够权限的角色。在MongoDB中,你可以使用内置角色如 readWriteAnyDatabase
、dbAdminAnyDatabase
、userAdminAnyDatabase
等,来授予用户跨数据库的权限。以下是创建一个具有访问所有数据库权限的用户的步骤:
-
连接到MongoDB容器:
使用以下命令进入MongoDB容器的交互式shell:docker exec -it mongodb mongosh -
选择admin数据库:
创建跨数据库权限的用户通常需要在admin
数据库中进行操作:use admin -
创建用户:
使用db.createUser()
方法来创建新用户,并为该用户分配跨数据库的角色。例如,创建一个名为superUser
,密码为superPassword
的用户,并给予该用户所有数据库的读写权限:db.createUser({ user: "superUser", pwd: "superPassword", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "dbAdminAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] }) 上述角色组合允许用户读写任何数据库、在任何数据库中执行管理任务以及在任何数据库中管理用户。
-
退出MongoDB Shell:
完成用户创建后,使用exit
命令退出MongoDB Shell:exit -
连接到MongoDB:
使用新创建的用户连接到MongoDB服务器:mongo --host 127.0.0.1 --port 27017 -u superUser -p superPassword --authenticationDatabase admin
请注意,使用 --authenticationDatabase admin
是因为用户是在 admin
数据库中创建的,并且拥有跨数据库的权限。如果你的MongoDB实例配置了不同的认证数据库,那么在连接时需要指定正确的 --authenticationDatabase
参数。
此外,创建具有广泛权限的用户会带来安全风险,因此请确保仅在信任该用户并了解潜在风险的情况下进行此操作。在生产环境中,建议遵循最小权限原则,仅授予用户完成其任务所需的最小权限。
简单使用记录
连接Docker MongoDB的方式
docker exec -it mongodb(容器的名字,或者id的前三个字符) mongosh
连接成功后,切换目标数据库
use mydb # 或者 use admin
如果有如下异常,那是需要身份认证
MongoServerError[Unauthorized]: Command listDatabases requires authentication db.auth("你的用户名", "你的密码")
查询有哪些数据库
show dbs
查询有哪些集合
show collections
查询某集合的数据
db.xxcollection.find()
本文作者:Jikefan
本文链接:https://www.cnblogs.com/jikefan/articles/18282121
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix