做一个代码世界的设计师!🍺|

Jikefan

园龄:4年11个月粉丝:5关注:4

Docker安装MongoDB

使用Docker安装MongoDB是一个相对简单的过程。以下是基本步骤的概述,你可以根据这些步骤进行操作:

  1. 安装Docker:如果你的系统尚未安装Docker,你需要先进行安装。可以参考 中的步骤更新源、安装Docker以及设置镜像加速。

  2. 搜索MongoDB镜像:使用命令 docker search mongo 来查找可用的MongoDB镜像版本 。

  3. 拉取MongoDB镜像:通过命令 docker pull mongo 来拉取最新的MongoDB镜像 。

  4. 创建挂载目录:在宿主机上创建目录以供MongoDB数据卷挂载使用。例如,你可以创建 /docker-software/mongodb/{data,logs} 目录并设置适当的权限 ,或者 /root/mongo/{data,conf,backup} 目录 。

  5. 运行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,启用身份验证 。

  6. 连接MongoDB:启动容器后,你可以使用 docker exec 命令连接到MongoDB实例。例如:

    docker exec -it mongodb mongosh

    这将打开MongoDB Shell,你可以使用 use admin 来选择admin数据库,并根据需要创建用户或执行其他操作 。

  7. 配置MongoDB:根据需要对MongoDB进行配置,比如设置认证用户等 。

要创建一个可以访问所有数据库的用户,你需要为该用户分配一个具有足够权限的角色。在MongoDB中,你可以使用内置角色如 readWriteAnyDatabasedbAdminAnyDatabaseuserAdminAnyDatabase 等,来授予用户跨数据库的权限。以下是创建一个具有访问所有数据库权限的用户的步骤:

  1. 连接到MongoDB容器
    使用以下命令进入MongoDB容器的交互式shell:

    docker exec -it mongodb mongosh
  2. 选择admin数据库
    创建跨数据库权限的用户通常需要在 admin 数据库中进行操作:

    use admin
  3. 创建用户
    使用 db.createUser() 方法来创建新用户,并为该用户分配跨数据库的角色。例如,创建一个名为 superUser,密码为 superPassword 的用户,并给予该用户所有数据库的读写权限:

    db.createUser({
    user: "superUser",
    pwd: "superPassword",
    roles: [
    { role: "readWriteAnyDatabase", db: "admin" },
    { role: "dbAdminAnyDatabase", db: "admin" },
    { role: "userAdminAnyDatabase", db: "admin" }
    ]
    })

    上述角色组合允许用户读写任何数据库、在任何数据库中执行管理任务以及在任何数据库中管理用户。

  4. 退出MongoDB Shell
    完成用户创建后,使用 exit 命令退出MongoDB Shell:

    exit
  5. 连接到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 中国大陆许可协议进行许可。

posted @   Jikefan  阅读(50)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· 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
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.

作曲 : Reol

作词 : Reol

fade away...do over again...

fade away...do over again...

歌い始めの一文字目 いつも迷ってる

歌い始めの一文字目 いつも迷ってる

どうせとりとめのないことだけど

伝わらなきゃもっと意味がない

どうしたってこんなに複雑なのに

どうしたってこんなに複雑なのに

噛み砕いてやらなきゃ伝わらない

ほら結局歌詞なんかどうだっていい

僕の音楽なんかこの世になくたっていいんだよ

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

僕は気にしない 君は気付かない

何処にももういないいない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

忘れていく 忘れられていく

We don't know,We don't know.

目の前 広がる現実世界がまた歪んだ

目の前 広がる現実世界がまた歪んだ

何度リセットしても

僕は僕以外の誰かには生まれ変われない

「そんなの知ってるよ」

気になるあの子の噂話も

シニカル標的は次の速報

麻痺しちゃってるこっからエスケープ

麻痺しちゃってるこっからエスケープ

遠く遠くまで行けるよ

安定なんてない 不安定な世界

安定なんてない 不安定な世界

安定なんてない きっと明日には忘れるよ

fade away...do over again...

fade away...do over again...

そうだ世界はどこかがいつも嘘くさい

そうだ世界はどこかがいつも嘘くさい

綺麗事だけじゃ大事な人たちすら守れない

くだらない 僕らみんなどこか狂ってるみたい

本当のことなんか全部神様も知らない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

僕は気にしない 君は気付かない

何処にももういないいない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

忘れていく 忘れられていく

We don't know,We don't know.