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用户和权限管理。
备份还原
详细内容见mongodb数据库的备份和数据导出导入
# 备份
$ 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/
参考资料: