如何使用Docker安装一个MongoDB呢?
下文笔者讲述docker安装mongodb的方法分享,如下所示
mongodb简介
MongoDB是一个基于分布式文件存储的数据库 MongoDB由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品 是非关系数据库当中功能最丰富,最像关系数据库的 Mongodb支持的数据结构非常松散,类似json的bson格式 Mongodb它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,可实现类似关系数据库单表查询的绝大部分功能,还支持对数据建立索引
docker安装mongodb
# 从repository查找mongo的相关镜像 $ docker search mongo # 下载官方镜像的最新版本 $ docker pull mongo:latest # 完成后,检查是否下载成功 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE mongo latest 89232341bd3 2 weeks ago 363MB
启动MongoDB
$ docker run -itd --name mongo -p 27017:27017 mongo --auth 1.--name后面的参数为docker容器名 2.-p后面是端口映射,即宿主端口:容器端口 3.--auth是否开始鉴权,如果不想开启可以去掉
默认数据是存在容器系统的/data/db目录下的 我们可使用自定义的宿主机器目录 可以在启动命令加上参数: -v /my/own/datadir:/data/db
进入容器
$ docker exec -it mongo bash $ docker exec -it 89232341bd3 bash
客户端命令连接数据库
# 默认连接本地的27017端口的MongoDB $ mongo # 指定IP与端口进行连接 $ mongo 127.0.0.1:27017 # 指定用户名和密码连接到指定的MongoDB数据库 $ mongo 127.0.0.1:27017/admin -u user -p password
查看Monogodb版本
(1)在linux命令通过mongo --version查询; (2)连接上数据库后,通过db.version()查询。 root@89232341bd3:/# mongo --version MongoDB shell version v4.2.1 git version: 7723hj24n444590okir248rfe22748353592122o OpenSSL version: OpenSSL 1.1.1 11 Sep 2018 root@89232341bd3:/# mongo > db.version()
创建admin管理用户
连上数据库后,我们先创建一个admin用户,用以管理其它用户 > use admin switched to db admin > db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]}); Successfully added user: { "user" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] } >
创建具有读写权限的用户
> db.auth('admin','123456'); 1 > db.createUser({ user:'user',pwd:'123456',roles:[ { role:'readWrite', db: 'testdb'}]}); Successfully added user: { "user" : "user", "roles" : [ { "role" : "readWrite", "db" : "testdb" } ] } >
认证用户并操作
> db.auth('user','123456') 1 > use testdb switched to db testdb > > db.person.insert({name:'Larry',age:18}) WriteResult({ "nInserted" : 1 }) > db.person.find({}) { "_id" : ObjectId("5ddaa14edbbac3c4f844366c"), "name" : "Larry", "age" : 18 }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。