• Mac M1运行、连接 Docker MongoDB7。导出、恢复数据库


    MongoDB,版本5、6.02、7.02适用
    记录两种使用MongoDB的方法,本地安装包和docker
    本地安装包方法:Mac M1安装MongoDB6、后台运行

    Docker Mongo

    一、docker运行MongoDB,并设置用户名密码

    可以在创建容器的时候指定root用户名密码(加上参数MONGO_INITDB_ROOT_USERNAME、MONGO_INITDB_ROOT_PASSWORD)
    也可以在容器运行后,进入容器连接数据库使用mongoshell创建用户
    注意执行命令的路径!可以新建一个文件夹,mkdir mongodb7,用来映射config和db文件。
    目前最新版本是7.0.2

    #为了命令行看起来更清晰,加了换行符\,注意格式,\后面不能有空格
    docker run  \
    --name mongodb7 \
    -p 27017:27017  \
    -v $PWD/mongodb/configdb:/data/configdb/ \
    -v $PWD/mongodb/data/db/:/data/db/ \
    -e MONGO_INITDB_ROOT_USERNAME=root \
    -e MONGO_INITDB_ROOT_PASSWORD=password \
    -d mongo \
    --auth
    #进入mongo容器
    docker exec -it mongodb7 /bin/bash
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    二、按需编辑配置

    如果要编辑配置,比如bindIp,需要新建一个mongod.conf配置文件,MongoDB 容器在启动时会自动生成一个默认的配置文件,并将其命名为 /etc/mongod.conf.orig,我们可以复制它再编辑

    #docker 镜像中没有vim,安装vim
    apt-get update -y
    apt-get install vim
    #复制默认配置
    cp /etc/mongod.conf.orig /etc/mongod.conf
    vi /etc/mongod.conf
    #修改后重启容器
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    三、容器内连接数据库

    进入docker容器输入mongo,连接到数据库
    旧版本命令是mongo,新版本用mongosh
    mongosh
    默认数据库是test
    图片.png
    如果在第一步docker指令中已经设置了用户名和密码,可以验证一下用户名密码,再执行其他操作
    db.auth(“root”,“password”)
    没有auth就会报错要求身份认证
    图片.png

    然后创建admin用户,以后使用uri连接要加上用户名和密码,比如比如mongodb://root:password@localhost:27017/
    数据库软件可以用mongo官方的compass(免费),jet的datagrip,navicat最新版本也支持mongodb
    图片.png
    如果没有在docker指令中指定root用户密码,可以创建一个

    show dbs
    #切换到admin数据库
    use admin
    #新建用户
    db.createUser({user: "root",pwd: "password",roles: [ { role: "root", db: "admin" } ]})
    #身份验证
    db.auth("root","password")
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    如果在其他应用中使用uri连接数据库,比如mongodb://root:password@localhost:27017/database-name?authSource=admin
    要注意连接的数据库有没有对应的用户,确认在哪个数据库建的用户。在默认情况下,MongoDB会将用户凭据存储在admin数据库中

    四、导出、恢复数据库

    需要用到导出、恢复,mongo数据库工具在这里下载
    https://www.mongodb.com/try/download/database-tools
    (笔者在恢复过程遇到了点问题用旧版本mongodb-database-tools-100.6.1-1解决了,记录一下)
    图片.png
    图片.png

    1、恢复数据库

    和连接数据库的uri一样也要注意用户凭据存在哪个数据库,下面的指令 目标数据库不存在的话会自动创建,–dir指定备份文件所在文件夹,–db指定恢复到哪个数据库。如果是密钥登陆,就使用–sslCAFile ./pem文件路径。到bin文件夹执行mongorestore程序。

    ./mongorestore --host localhost:27017 \
    --dir ./database-backup --db  database-name \
    --username root --password password \
    --authenticationDatabase=admin
    
    • 1
    • 2
    • 3
    • 4

    2、导出数据库

    –out指定输出的路径,不存在文件夹会自动创建

    ./mongodump --host localhost:27017 \
    --out ./output --db  database-name \
    --username root --password password \
    --authenticationDatabase=admin
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    oracle 表空间相关介绍及操作
    SpringBoot项目文件上传校验(注解版)
    ToDesk等远程软件连接主机无法更改分辨率 - 解决方案
    在Ubuntu18.04安装适合jdk8的eclipse
    (ChatGPT、Al柯基、Al Web、ChatGPT4.0中文网、VIVI-Al)分享好用的ChatGPT
    Zookeeper:在三种模式下的部署
    Vue + Element 表格拖拽排序、树形表格拖拽排序
    Unity 工具 之 Azure 微软语音合成普通方式和流式获取音频数据的简单整理
    后端工程师的前端之路系列--小程序学习
    【AI视野·今日NLP 自然语言处理论文速览 第三十九期】Fri, 22 Sep 2023
  • 原文地址:https://blog.csdn.net/qq_42112618/article/details/133769230