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()
posted @ 2024-07-03 16:47  Jikefan  阅读(112)  评论(0)    收藏  举报