Wangjili
文章58
标签12
分类9
mongodb学习

mongodb学习

本文记录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 注意事项

  1. 云服务器要开放端口27017;
  2. 要在云服务器上添加安全组策略,比如云服务器是阿里云的,则需要登录阿里云服务,在控制台的云服务器中配置安全组策略。

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. 命令行方式和1.2.5相同,连接成功后,先要验证
    use admin
    db.auth("root","123456") # 返回 1 说明成功,可以创建、查询数据,否则会报错
    use demo
    show collections
    db.info.find()
  2. 在windows下,可以通过mongodb compass连接,直接输入mongodb://root:123456@服务器地址,成功后就可以看到当前数据库的存储信息了。
本文作者:Wangjili
本文链接:https://blog.wangjili.cn/2023/12/01/mongodb/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可