写在前面
本文一方面为了学习 Docker 的操作和使用,另一方面是方便以后 MongoDB 的移植。
操作步骤
查找 docker 中的 mongo
docker search mongo拉取镜像
docker pull mongo:3.6或者docker pull mongo默认拉取 latest在本地主机创建文件夹作为 mongo 数据存储目录
1
2mkdir mongo
cd mongo运行 mongo 镜像
docker run -p 27017:27017 -v $PWD/db:/data/db -d mongo:3.6- -p 27017:27017 :将容器的 27017 端口映射到主机的 27917 端口(端口可以自己定义)
- -v $PWD/db:/data/db :将主机中当前目录下的 db 挂载到容器的/data/db,作为 mongo 数据存储目录(
$PWD必须要大写) - –name 设置该容器的名称
- -d 设置容器以守护进程方式运行
重命名容器对象
docker rename reverent_mestorf hu_mongo进入 admin 数据库
1
2docker exec -it hu_mongo bash
mongo admin也可简写为
docker exec -it hu_mongo mongo admin创建数据库账户
创建管理员账户(拥有所有权限),如果出现加密错误的问题,需要在创建用户命令中加一个参数换一种加密方式:mechanisms: [“SCRAM-SHA-1”]
1
2
3
4
5
6db.createUser({
user: 'admin',
pwd: '123456',
roles: [{role: "userAdminAnyDatabase", db: "admin"}],
mechanisms : ["SCRAM-SHA-1"]
});开启验证
db.auth("admin","123456");1 代表授权验证成功创建目标数据库(实际上切换即可)
use test创建目标数据库管理用户
1
2
3
4
5
6db.createUser({
user: 'test',
pwd: 'test',
roles: [{role: "readWrite", db: "test"}],
mechanisms : ["SCRAM-SHA-1"]
});开启验证
db.auth("test","test");1 代表授权验证成功
注意:
- admin 的作用是管理用户,MongoDB 下的每个数据库,用户都被它管理,除此外,它基本没什么更多权限做其他事情
- MongoDB 没有通常意义的超级用户的概念,test 库的授权用户只能被 admin 创建,而 admin 只能登陆 admin 数据库