docker部署mongoDB,koa链接

396 阅读2分钟

「这是我参与2022首次更文挑战的第4天,活动详情查看:2022首次更文挑战」。

一.mongoDB简介

  • 源自于英文单词"Humongous",中文译为庞大的

  • 面向文档存储的开源数据库

  • 由C++编写而成

  • 优势:

    • 性能好(内存计算)

    • 支持大规模的数据存储(可拓展性)

    • 可靠安全(本地复制,自动故障转移)

    • 方便存储复杂的数据结构(Scheme Free)

  • mongoDB是一种NoSQL

二.NoSQL

  • 对不同于传统的关系型数据库的统称

  • 分类:

    • 列存储(HBase)
    • 文档存储(MongoDB)
    • key-value存储(Redis)
    • 图存储(FlockDB)
    • 对象存储(db4o)
    • XML存储(BaseX)
  • 优势:

    • 简单(没有原子性,一致性,隔离性等复杂规范)
    • 便于横向拓展,很容易的增加服务器的数量来增加计算能力。纵向拓展是指增加内存增加硬盘。因为非常简单,没有复杂的规范,而传统的数据库很很多规范,在大量服务器上遵循这些规范进行通信是非常复杂的。
    • 适合超大规模数据存储
    • 很灵活的存储复杂结构的数据(Scheme Free)

三.docker部署

  • docker search mongo 查询mongo的镜像

  • docker image pull mongo 拉取最新的mongo镜像

  • docker container run -itd --name mongo -p 27017:27017 mongo --auth // 启动一个容器,-d持续化执行,-p映射端口号,--auth需要密码才能访问容器服务

  • docker container ls //查看是否存在容器

  • docker exec -it mongo mongo admin // 尝试连接

  • db.createUser({ user:'admin',pwd:'password',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]}); // 创建一个用户

  • db.auth('admin', 'Rzh.971124') // 用刚刚创建的用户进行连接

四.koa链接数据库

  • 安装Mongoose:npm i monoose --save
  • 用Mongoose进行连接
const mongoose = require('mongoose')
const option = {
	useNewUrlParser:true
}
mongoose.connect(connectStr,option,()=>{
	console.log("mongoDB链接成功了")
})
mongoose.connection.on('error',console.error)

五.遇到的问题:

1.MongoDB shell version v5.0.3

connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb

Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SocketException: Error connecting to 127.0.0.1:27017 :: caused by :: Connection refused :

connect@src/mongo/shell/mongo.js:372:17

@(connect):2:6

exception: connect failed

exiting with code 1

参考资料: