3

Docker安装MongoDB并使用Navicat连接 - 追逐时光者

 1 year ago
source link: https://www.cnblogs.com/Can-daydayup/p/16653882.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

文章正文:

MongoDB简介:

  MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。MongoDB最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

查看可用的MongoDB版本:

访问DokcerHub中的MongoDB镜像库地址:https://hub.docker.com/_/mongo/tags

可以通过 Sort by 查看其他版本的MongoDB,查看最新版本MongoDB镜像(mongo:latest):https://hub.docker.com/_/mongo/tags?page=1&name=latest

1336199-20220918181523098-804240778.png

 此外,我们还可以用docker search mongo命令来查看可用版本: 

1336199-20220918181652213-1731399645.png

拉取最新版本的MongoDB镜像:

docker pull mongo:latest

注意:tag是可选的,tag表示标签,多为软件的版本,默认是latest版本(最新版)

1336199-20220918181850432-728077476.png

验证MongoDB镜像是否成功拉取到本地:

使用以下命令来查看MongoDB镜像是否成功拉取到本地:

docker images
1336199-20220918182042934-439954334.png

创建并运行一个MongoDB容器:

docker run -itd --name mongo-test -p 27017:27017 mongo --auth

参数说明:

  • -itd:其中,i是交互式操作,t是一个终端,d指的是在后台运行。
  • --name mongo-test:容器名称
  • -p 27017:27017 :映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务。
  • --auth:需要密码才能访问容器服务。

1336199-20220918182931175-1708576518.png

1336199-20220918183139655-1291710365.png

解决无法正常执行mongo命令问题

进入容器:

docker exec -it  mongo-test mongo

1336199-20221016123434663-1228746207.png

 异常原因:

OCI runtime exec failed: exec failed: unable to start container process: exec: "mongo": executable file not found in $PATH: unknown

官网解决方案:

https://github.com/docker-library/mongo/issues/558

mongo5.0以上的版本使用mongo来执行mongodb命令已经不支持了,你需要改用mongosh来替代mongo!

1336199-20221016124300723-1375377094.png

添加MongoDB连接用户和密码:

1、进入创建的MongoDB容器

docker exec -it  mongo-test mongosh
1336199-20221016143002826-1096026196.png

2、创建MongoDB用户

#进入 admin 的数据库
use admin

#创建管理员用户
db.createUser(
   {
     user: "admin",
     pwd: "123456",
     roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
   }
 )

 #创建有可读写权限的用户. 对于一个特定的数据库, 比如'demo'
 db.createUser({
     user: 'test',
     pwd: '123456',
     roles: [{role: "read", db: "demo"}]
 })
1336199-20221016143847254-1140442905.png

服务器配置27017的开放端口:

1336199-20221016144754179-853573000.png

Navicat连接mongoDB

1.连接MongoDB点击这个位置

1336199-20221016151048793-1143153623.png

2、连接参数介绍:

stand alone:独立的

shard cluster:分片集群

replica set:复制集

SRV record:

SRV记录是DNS服务器的数据库中支持的一种资源记录的类型,它记录了哪台计算机提供了哪个服务这么一个简单的信息。

SRV 记录:一般是为Microsoft的活动目录设置时的应用。DNS可以独立于活动目录,但是活动目录必须有DNS的帮助才能工作。

为了活动目录能够正常的工作,DNS服务器必须支持服务定位(SRV)资源记录,资源记录把服务名字映射为提供服务的服务器名字。

活动目录客户和域控制器使用SRV资源记录决定域控制器的IP地址。

一般情况下,我们连接只需要连接主库查数据,所以选择独立的这个连接方式就可以,填写好常规参数可以点击测试连接是否正常,即可连接!

1336199-20221016151637458-97446919.png
1336199-20221016181139072-1562356833.png

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK