MongoDB维护

date
Sep 24, 2022
slug
mongodb
status
Published
tags
MongoDB
summary
记录Mongo安装,新建用户和库,备份恢复。
type
Post

安装配置

1、docker安装
# 拉去镜像
$ docker pull mongo:latest

# 创建文件夹
$ mkdir -p /opt/app/mongodb/data/db
# mongodb下面所有子目录给予777权限
$ chmod 777 -R /opt/app/mongodb/data/db

# 运行容器
$ docker run -d --name mongodb -p 17017:27017 -v /opt/app/mongodb/data:/data -v /opt/app/mongodb/mongod.conf:/etc/mongod.conf -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=admin@123! --privileged=true --restart always mongo
启动参数说明:
-d:后台运行容器 –-name mongodb:运行容器名 -p 17018:27017:将容器的27017端口映射到主机的27018端口 -v /opt/app/mongodb/data/db:/data/db:文件挂载映射 -e MONGO_INITDB_ROOT_USERNAME=admin:指定用户名 -e MONGO_INITDB_ROOT_PASSWORD=admin@123!:指定密码 –-privileged=true:使得容器内的root拥有真正的root权限 –-restart always:跟随docker一起启动,即docker启动时会自动运行容器 mongo:运行的镜像名字
对于mongod.conf的内容,可看Configuration File Options中文版MongoDB 中 YAML 模式 配置文件 说明
 
2、进入mongo
需要并进行身份验证,否则会提示MongoServerError: command listDatabases requires authentication
# 进入容器
$ docker exec -it mongodb bash

# 执行mongo cli
$ mongosh

# 默认进去是test,需要切换DB
$ use admin;

# 以上命令可简写成:docker exec -it mongodb mongosh admin

$ db.auth("admin","admin@123!");
{ ok: 1 }

$ show dbs;
admin   100.00 KiB
config   12.00 KiB
local    72.00 KiB
3、创建数据库和用户
# 切换到新数据库
$ use yapi;

# 创建该库的管理员
$ db.createUser({ user: 'admin', pwd: 'admin@123!', roles: [ { role: "dbOwner", db: "yapi" } ] });

# 创建该库的普通用户
$ db.createUser({ user: 'yapi', pwd: 'ab@123!', roles: [ { role: "readWrite", db: "yapi" } ] });
对于不同的权限可看mongo用户和权限管理
 

备份还原

# 备份
$ mongodump -h 127.0.0.1:27017 -d yapi --gzip -o /data/db/bak/

# 还原
$ mongorestore -h 127.0.0.1:27017 -d yapi -u yapi -p ab@123! --gzip --dir ./yapi/
 

参考资料:
 

© 刘德华 2020 - 2023