Docker安装一个MongoDB使用用户密码登录建立链接

4,539 阅读2分钟

学习过程中使用MongoDB一般都是直接本地无用户密码连接,可是生产上使用的数据库肯定不是这样的,自己工作之余学习使用记录一些卡点。

安装过程

拉取镜像

docker pull mongo:latest

启动容器

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')

如下:

mongosh是从 MongoDB 4.2 开始推出的 shell 工具,取代了之前的 mongo 命令,用于执行数据库的操作,这里要留意一下,如上述错误请使用一下方案

mongosh

image.png

客户端连接

我使用的是Robo 3T 无密码时一般是这种连接

有密码时:

创建链接,

由于自己初学找了好多博客等都是无密码链接,最后还是看官方文档才知道了链接方式

附官方文档地址 mongodb.github.io/node-mongod…

egg-mongoose的链接方式

自己也试了很多方式才找到的,难道正式环境都不加用户密码的么?

image.png

附来源地址 github.com/eggjs/egg/i…

方便别人学习,也方便自己记录。

由于自己一直做前端,开发,这些许久不用,后来再看自己都忘了是什么了,以下是最近又看补充的一点知识

image.png