用生命谱写代码的赞歌

0%

Docker 安装 MongoDB

写在前面

本文一方面为了学习 Docker 的操作和使用,另一方面是方便以后 MongoDB 的移植。

操作步骤

  1. 查找 docker 中的 mongo
    docker search mongo

  2. 拉取镜像
    docker pull mongo:3.6 或者 docker pull mongo 默认拉取 latest

  3. 在本地主机创建文件夹作为 mongo 数据存储目录

    1
    2
    mkdir mongo
    cd mongo
  4. 运行 mongo 镜像
    docker run -p 27017:27017 -v $PWD/db:/data/db -d mongo:3.6

    • -p 27017:27017 :将容器的 27017 端口映射到主机的 27917 端口(端口可以自己定义)
    • -v $PWD/db:/data/db :将主机中当前目录下的 db 挂载到容器的/data/db,作为 mongo 数据存储目录($PWD必须要大写)
    • –name 设置该容器的名称
    • -d 设置容器以守护进程方式运行
  5. 重命名容器对象
    docker rename reverent_mestorf hu_mongo

  6. 进入 admin 数据库

    1
    2
    docker exec -it hu_mongo bash
    mongo admin

    也可简写为 docker exec -it hu_mongo mongo admin

  7. 创建数据库账户

    1. 创建管理员账户(拥有所有权限),如果出现加密错误的问题,需要在创建用户命令中加一个参数换一种加密方式:mechanisms: [“SCRAM-SHA-1”]

      1
      2
      3
      4
      5
      6
      db.createUser({
      user: 'admin',
      pwd: '123456',
      roles: [{role: "userAdminAnyDatabase", db: "admin"}],
      mechanisms : ["SCRAM-SHA-1"]
      });
    2. 开启验证
      db.auth("admin","123456"); 1 代表授权验证成功

    3. 创建目标数据库(实际上切换即可)
      use test

    4. 创建目标数据库管理用户

      1
      2
      3
      4
      5
      6
      db.createUser({
      user: 'test',
      pwd: 'test',
      roles: [{role: "readWrite", db: "test"}],
      mechanisms : ["SCRAM-SHA-1"]
      });
    5. 开启验证
      db.auth("test","test"); 1 代表授权验证成功

注意:

- admin 的作用是管理用户,MongoDB 下的每个数据库,用户都被它管理,除此外,它基本没什么更多权限做其他事情
- MongoDB 没有通常意义的超级用户的概念,test 库的授权用户只能被 admin 创建,而 admin 只能登陆 admin 数据库