本文记录mongodb
相关知识
1.1搜索、拉取和查看镜像
在云服务器上操作
docker search mongo
docker pull mongo # 建议选择docker.io下面的mongo镜像
docker images | grep mongo # 查看是否已有mongo镜像
1.2使用docker安装mongodb(创建容器并运行)
在云服务器上操作
有两种方式:不开启连接验证和开启连接验证,建议开启,因为是在服务器上运行数据库,相当于是对外提供服务,如果不开启验证,其他人如果知道你的服务器IP,很可能会破坏你的数据库。
1.2.1 不开启连接验证
在云服务器上操作
需要先在本地创建好~/docker/mongo
文件夹,这个后面有解释。
docker run --name mongodb -v ~/docker/mongo:/data/db -p 27017:27017 -d mongo
执行上述命令之后,一个挂载了mongo镜像的容器就开始运行了,其中
--name
设置了容器的名字-v
设置了路径的映射,将本地路径映射到容器中,此处路径可以自定义p
设置了端口的映射,将容器的27017(右侧)映射到了本地的27017(左侧)
运行已有的容器docker start/stop/stats/restart mongodb
1.2.2 进入、退出容器
在云服务器上操作
docker exec -it mongodb bash
上述命令的意思是:使用交互的形式,在名字为mongodb
的容器中实行bash
这个命令,退出:ctrl + P + Q
或者exit
1.2.3 mongodb的使用
在云服务器上操作
- 用户的创建
# 进入mongo,或 mongosh mongo # 进入 admin 的数据库 use admin # 创建管理员 db.createUser( { user:"root", pwd:"123456", # 尽量复杂一点 roles:[{role:"root",db:"admin"}] # root 管理员 } ) # 权限说明 #1.数据库用户角色:read、readWrite; #2.数据库管理角色:dbAdmin、dbOwner、userAdmin; #3.集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager; #4.备份恢复角色:backup、restore #5.所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase #6.超级用户角色:root
- 数据库建立# 选择数据库 use demo # 写入一条数据 db.info.insertOne({name:"test",age:"123"}) # 查询数据 db.info.find() # 如果有数据,说明创建数据成功
1.2.4 远程连接
在云服务器上操作
在mongodb
的容器当中,在容器的终端命令模式下操作
# 更新源
apt-get update
# 安装 vim
apt-get install vim
# 修改mongo配置文件
vim /etc/mongod.conf.orig
将其中的bindIp: 127.0.0.1
注释掉# bindIp: 127.0.0.1
或者改成bindIp: 0.0.0.0
即可开启远程连接
1.2.5 本地连接远程mongodb
在本地机器上操作
本地机器要安装了mongodb
mongo mongodb://服务器地址:端口号
1.2.6 注意事项
- 云服务器要开放端口27017;
- 要在云服务器上添加安全组策略,比如云服务器是阿里云的,则需要登录阿里云服务,在控制台的云服务器中配置安全组策略。
1.3 开启带验证的mongodb
在云服务器上
如果你根据1.2
创建了没有开启验证的mongodb,建议使用以下命令删除上面创建的容器
# 停止 mongodb 容器
docker stop mongodb
# 删除,其实不删除也可以,不过新的不能重名,建议删除
docker rm mongodb
1.3.1 创建带验证的mongodb
在云服务器上
创建容器 --有校验
docker run --name mongodb -v ~/docker/mongo:/data/db -p 27017:27017 -d mongo -auth
# 启动容器之后,使用admin进入
docker exec -it mongodb mongosh admin # 我无法使用mongo,所有用了mongosh
# 权限认证
db.auth("root","123456") # 返回 1 说明成功
到这里,就成功了,可以在本地使用带验证的远程连接
1.3.2 远程连接
在本地机器上操作
- 命令行方式和
1.2.5
相同,连接成功后,先要验证use admin db.auth("root","123456") # 返回 1 说明成功,可以创建、查询数据,否则会报错 use demo show collections db.info.find()
- 在windows下,可以通过
mongodb compass
连接,直接输入mongodb://root:123456@服务器地址
,成功后就可以看到当前数据库的存储信息了。