Docker安装mongodb

Docker 安装 mongodb

# 查找镜像
docker search mongo
# 安装镜像
docker pull mongo
# 创建容器
docker run -itd --name mongo -p 27017:27017 mongo --auth
  • -p 27017:27017 :映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务。
  • –auth:需要密码才能访问容器服务。
docker exec -it mongo mongo admin
# 创建一个名为 admin,密码为 123456 的用户。
db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
# 尝试使用上面创建的用户信息进行连接。
db.auth('admin', '123456')
# 查看数据库
show dbs
# 查看数据库 (需要在登录的情况下)
show dbs
# 创建数据库
use testdb
# 添加数据, 不然 show dbs 不会显示
db.testdb.insert({"name":"test"})
# 创建管理员
db.createUser({ user:'testdbadmin',pwd:'123456',roles:[ { role:'dbOwner', db: 'testdb'},{ role: 'dbAdmin', db: 'testdb'}]});
# 创建完,不要登录,会和 admin 冲突
Built-In Roles(内置角色):
  1. 数据库用户角色:read、readWrite;
  2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
  3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
  4. 备份恢复角色:backup、restore;
  5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  6. 超级用户角色:root
  7. 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
  8. 内部角色:__system
具体角色:

Read:允许用户读取指定数据库

readWrite:允许用户读写指定数据库

dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile

userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户

clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。

readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限

readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限

userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限

dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限

root:只在admin数据库中可用。超级账号,超级权限

补充
使用 egg.js 进行连接
# 初始化 egg
init egg --type=simple
npm i
使用 egg-mongoose
# 安装
npm i egg-mongoose --save

配置插件

// {app_root}/config/plugin.js

'use strict';

/** @type Egg.EggPlugin */
module.exports = {
  // had enabled by egg
  // static: {
  //   enable: true,
  // }
  mongoose: {
    enable: true,
    package: 'egg-mongoose',
  },
};

配置

// {app_root}/config/config.default.js
module.exports = appInfo => {
  /**
   * built-in config
   * @type {Egg.EggAppConfig}
   **/
  const config = exports = {
    mongoose: {
      url: 'mongodb://testdbadmin:123456@127.0.0.1:27017/testdb',
      options: {},
    },
  };
  // ...

创建 model

// {app_root}/model/user.js
'use strict';
module.exports = app => {
  const mongoose = app.mongoose;
  const Schema = mongoose.Schema;

  const UserSchema = new Schema({
    userName: { type: String },
    password: { type: String },
  });

  return mongoose.model('User', UserSchema);
};

使用

// {app_root}/controller/user.js
'use strict';
const Controller = require('egg').Controller;

class UserController extends Controller {
  async index() {
    const { ctx } = this;
    this.ctx.model.User.create({
      userName: 'test',
      password: '123456',
    }, () => {

    });
    ctx.body = await ctx.model.User.find({});
  }
}

module.exports = UserController;
可视化工具:Robo 3T | Free, open-source MongoDB GUI (formerly Robomongo)
参考

MongoDB的角色说明_ljk168的专栏-CSDN博客_mongodb 角色

Docker 安装 MongoDB | 菜鸟教程 (runoob.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值