使用docker创建mongoDB数据库容器
 
下载mongo镜像
 
docker pull mongo
 
 
 
后面没有版本后默认下载最新的
 
 
下载完成后查看
 
docker images
 
创建并启动mongo容器
 
创建一个本地的文件夹, 用来进行数据文件夹映射
 
 
 数据文件保存在本地比较好, 这样即使删除了容器数据库文件还在,数据不会丢失
 
 
创建启动容器
 
docker run -d -p 27017:27017 --restart always  --name mongodb -v E:\Docker_file\mongo\data\db:/data/db mongo --auth
 
参数说明:
 
-d : 允许容器后台运行-p 27017:27017 : 进行端口映射--restart always: 容器随docker启动而启动-v E:\Docker_file\mongo\data\db:/data/db : 数据库文件地址映射,--auth : 需要密码才能访问容器服务 
添加用户和密码
 
进入容器内部
 
docker 
exec -it mongodb mongo admin
 
切换到admin库
 
 
 如果当前是admin数据库, 则这步可以不执行
 
 
use admin
;
 
创建名和密码都为 admin 的用户
 
db.createUser
({ user:
'admin',pwd:
'admin',roles:
[ { role:
'userAdminAnyDatabase', db: 
'admin'}]});
 
连接数据库
 
db.auth
("admin",
"admin")
 
 
使用工具连接数据库
 
数据用户名和密码, 测试连接 
 
可能会出现的问题
 
在操作数据库的时候,可能会出现
 
 
这是权限造成的, 我试了试, 创建用户的时候, 将用户设置为超级用户即可
 
创建一个用户名和密码都为 root 的超级用户
 
db.createUser
({ user: 
"root" , pwd: 
"root", roles: 
["root"]})
 
这样在操作数据看就没有问题了
 
也可以修改 admin 用户的权限来解决
 
db.grantRolesToUser
( "admin", 
[{ role: 
"root", db: 
"admin"}])
 
也可以修改 admin 用户的权限来解决
 
db.grantRolesToUser
( "admin", 
[{ role: 
"root", db: 
"admin"}])
 
注意: 用户相关操作一定要在 admin 数据库中进行!!!