Mongodb单点部署及数据迁移

1:先去部署一个mongodb,根据镜像仓库情况进行选择。这里直接上docker-compose部署。

mongodb.yml

version: "3"
services:

  mongodb:
    image: ip:port/public/mongo #所有仓库地址
    container_name: mongodb
    environment:
      MONGO_INITDB_DATABASE: test
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: test
    ports:
      - "27017:27017"
    volumes:
      - test_data:/data/db

volumes:
  test_data:

2:在该docker-compose文件的当前目录执行:docker-compose -f mongodb.yml up -d(指定运行的文件,运行的方式)

3:建立集合:

一般默认的账号密码会写在portina里面的环境变量里面。

root test   这个是对应这admin这个库。

进入启动的容器,切换到admin库。

use admin    这里切换到了admn库

然后进行鉴权   db.auth(“root”,”test”)

鉴权后可以show dbs 查看有哪些库,show users查看有哪些用户。

注意:我们的业务库是在custom库,初始的mongodb中没用这个库。需要我们建立一个。

 > use custom
switched to db runoob
> db
custom
> 

这里就建立了一个custom库,但是库里面没用任何数据,我们用show dbs命令看不到,这时候我们要插入一条数据进去,才能看到数据库

custom库建立了,但是我们的root test账密还是登不进去。

进入custom库,用show users发现没有custom库的角色,那我们切入到custom库下面,执行:注意冒号后要空格

db.createUser(

{

   user: "test",

   pwd: "test,

   roles: [

      { role: "readWrite", db: "cmdb" },

      { role: "dbAdmin", db: "cmdb" }

   ]

}

)

上面不行再切到admin库执行下面命令

db.createUser({user:"test",pwd:"test",roles:[{"role":"userAdminAnyDatabase","db":"admin"},{"role":"readWrite","db":"custom"}]})

这个角色就能读写和管理集合

4:custom数据库建好之后,开始数据迁移:

Mongo迁移有几种方式,推荐export import   导出+导入  以json文件的形式

熟练的可以用store等方式备份还原。

导出

mongoexport --host 127.0.0.1 -u root -p test --db custom --collection data -o data.json --authenticationDatabase admin

导入

mongoimport --host 127.0.0.1 -u root -p test --db data --collection data --file data.json  --authenticationDatabase admin

注意: --collection参数里的集合,需要与导出文件的集合相对应。 这个需要逐一对应。导错了就要去命令行,切换到要删除的库,然后db.dropDatabase()

说明:mongodb 

数据库用户角色:read、readWrite;

数据库管理角色:dbAdmin、dbOwner、userAdmin;

集群管理角色:clusterAdmin、clusterManager、4. clusterMonitor、hostManage;

备份恢复角色:backup、restore;

所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

超级用户角色:root

内部角色:__system

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

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

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

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

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

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

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

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

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

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

你可能感兴趣的:(mongodb,docker)