一、mongo导入导出数据
1.1 宿主机导入数据文件到mongo容器
从本地导入文件到mongo容器
docker cp 宿主机文件路径 容器id:容器路径
- 举例:
docker cp D:/down/bdd 8af2841a3d3c:/data/bdd
查看文件是否拷贝成功
docker exec -it mongo /bin/bash
cd /data/bdd 使用ls命令
1.2 mongo导入数据库文件
1)、进入mongo数据库
docker exec -it mongo mongo admin
mongo5.0以上的版本使用mongo来执行mongodb命令已经不支持了
改用mongosh来替代mongo!
docker exec -it mongo mongosh
2)、登录mongo(前面已经为admin创建过用户了
db.auth(‘admin’,‘12345678’)
3)、创建数据库且为该数据库创建用户和分配权限
use bdd #创建数据库,如果存在则使用该库
db.createUser({ user:‘test’,pwd:‘12345678’,roles:[ { role:‘dbOwner’, db: ‘bdd’}]})
4)、进入到mongo容器,将所需要的数据文件导入mongo数据库
退出mongo数据库 ,进入mongo容器
exit 退出
docker exec -it mongo bash
将目标目录里的文件导入到数据库
mongorestore -d 数据库 --username 用户名 --password 密码 目录
例如:mongorestore -d bdd --username test --password 123456 data/bdd
注意:
在导入数据文件的时候,导入的哪个数据库就要为哪个数据库创建相应的用户和权限,否则会报权限错误异常。在不同的数据库中 用户是不共同的,不能用admin数据库下的用户去导到mydbs数据库
创建用户:
登录到mong中时 默认在test库 默认没有用户
先切换admin
use admin
为admin创建用户
db.createUser({ user:'root',pwd:'root123',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},'readWriteAnyDatabase']});
【user:‘root’ 】:用户名:root
【pwd:‘root23’】:密码为:root123
【role:‘userAdminAnyDatabase’】:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
【db: ‘admin’】:可操作的数据库
【‘readWriteAnyDatabase’】:赋予用户读写权限dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile