MongoDB快速入门

简介

什么是MongoDB

  1. 是一款基于分布式文件存储的数据库。
  2. 基于C++编写的非关系型数据库,为WEB应用提供可扩展的高性能数据库存储解决方案。
  3. MongoDB是最想关系型数据库的非关系型数据库,具备关系型数据的查询方式。
  4. 存储格式是一种类似于jsonbson格式,可以存储非常复杂的数据类型。
  5. 其语法有点像面向对象的查询语言,且还支持数据建立索引。

MongoDB有什么优势?使用于那些场景?

优势:

  1. 高并发读写。
  2. 海量数据存储。
  3. 高扩展和高可用。

适用存储的数据:

  1. 数据量大。
  2. 读写操作频繁。
  3. 价值较低且对事务性要求不高的数据。

使用MongoDB

下载并安装MongoDB

在使用MongoDB前我们首先需要安装一下MongoDB,所以我们必须到官网下载一下MongoDB,下载地址如下:

https://www.mongodb.com/download-center/community/releases

因为笔者是要部署在阿里云服务器上,所以选择了下面这个版本,读者可以按需下载:

MongoDB快速入门_第1张图片

完成下载后,将其放到服务器上,以笔者为例,我将文件上传到/app/soft/这个文件夹下,然后进行解压

tar -zxvf mongodb-linux-x86_64-rhel62-4.4.18.tgz

为了方便使用,我们将解压后的文件夹重命名为mongoDB

mv mongodb-linux-x86_64-rhel62-4.4.18 mongoDB

然后在进入mongoDB文件夹,创建数据目录日志目录:

  cd mongoDB/
 mkdir -p ./data/db
 mkdir -p ./log


完成后的文件结构如下图所示:

MongoDB快速入门_第2张图片

然后在mongoDB根目录创建mongodb.conf这个配置文件,进行数据库目录和日志目录的配置

vim mongodb.conf

内容如下,可以看到systemLogpath执行日志位置,storagedbPath即我们刚刚数据目录

systemLog:
# 日志目录
  destination: file
  path: "/app/soft/mongoDB/log/mongodb.log"
  logAppend: true
storage:
# 数据存储文件配置
  dbPath: "/app/soft/mongoDB/data/db"
  journal:
    enabled: true
processManagement: 
   fork: true
net:
   bindIp: 0.0.0.0
   port: 27017


到此我们的MongoDB差不多安装完成了,我们不妨启动测试一下,首先进入MongoDBbin目录运行mongod 文件,命令如下

 cd bin/
./mongod -f /app/soft/mongoDB/mongodb.conf

如果输出下方所示内容,则说明安装成功了


The server generated these startup warnings when booting:
        2023-02-10T13:44:09.421+08:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
        2023-02-10T13:44:10.525+08:00: You are running this process as the root user, which is not recommended
        2023-02-10T13:44:10.525+08:00: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'
---
---
        Enable MongoDB's free cloud-based monitoring service, which will then receive and display
        metrics about your deployment (disk utilization, CPU, operation statistics, etc).

        The monitoring data will be available on a MongoDB website with a unique URL accessible to you
        and anyone you share the URL with. MongoDB may use this information to make product
        improvements and to suggest MongoDB products and deployment options to you.

        To enable free monitoring, run the following command: db.enableFreeMonitoring()
        To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---
>

配置MongoDB

为了方便后续的使用,我们不妨对MongoDB配置环境变量,所以我们必须使用vim编辑一下profile文件:

 vim /etc/profile

添加下面这段内容,可以看到PATHMongoDBbin目录路径

export PATH=$PATH:/app/soft/mongoDB/bin

配置完成后,使用下面这条命令使其生效

source /etc/profile

初始化管理员账号

为了保证数据库安全,我们必须开启权限认证模式,所以我们需要再次登录MongoDB,使用admin数据库,创建一个管理员账号,如下所示,使用use命令切换数据库(如果数据库不存在则会创建)
完成后使用db.createUser创建一个名为root管理员用户,可以看到笔者让这个名为root的用户角色为root
一旦成功后则会输出Successfully added user

> use admin
switched to db admin
> db.createUser({user:"root",pwd:"xxxxxx",roles:[{role:"root",db:"admin"}]})

此时我们在配置文件中开启认证,即在mongodb.conf添加下面这段配置

security:
  authorization: enabled

然后我们就可以以账户密码的方式直接登录mongoDB,由于我们已经为MongoDB配置了环境变量,所以我们可以在任意位置使用如下命令进行登录:

mongo admin -u root -p xxxxxx

我们不妨使用show users查看一下当前数据库的用户,如下所示,可以看到我们刚刚的root用户,并且加密方式采用SCRAM-SHA-1SCRAM-SHA-256

> show users;
{
        "_id" : "admin.root",
        "userId" : UUID("xxxxxx-584a-4041-a02c-134c274473cc"),
        "user" : "root",
        "db" : "admin",
        "roles" : [
                {
                        "role" : "root",
                        "db" : "admin"
                }
        ],
        "mechanisms" : [
                "SCRAM-SHA-1",
                "SCRAM-SHA-256"
        ]
}

为了进一步测试功能的可用性,我们不妨创建一个accesslog的数据库,如下所示,使用use创建accesslog。再使用createUseraccesslog创建一个名为accesslog的用户,角色为readWrite即具备读写权限的角色。

> use accesslog
switched to db accesslog
> db.createUser({
   user: 'accesslog',  //用户名
   pwd: 'xxxxxx',  //密码
   roles:[{
     role: 'readWrite', //角色
     db: 'accesslog'    //数据库
   }]
 })

更多角色

1. 数据库用户角色:read、readWrite
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin
3. 集群管理角色(admin):clusterAdmin、clusterManager、clusterMonitor、hostManager
4. 备份恢复角色(admin):backup、restore
5. 所有数据库角色(admin): readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、 dbAdminAnyDatabase
6. 超级用户角色(admin):root

基础使用

关于MongoDB的增删改查,可以参考下面这篇文章,写的比较详细了。

MongoDB快速入门,掌握这些刚刚好!

使用DBeaverEE连接MongoDB

完成后我们尝试使用本地数据库终端连接一下数据库,以笔者为例,笔者使用管理员账号登录,输入连接信息后,点击连接测试

MongoDB快速入门_第3张图片

可以看到连接成功了,就说明可以进行正常连接,自此我们就可以连接MongoDB进行下一步工作了

MongoDB快速入门_第4张图片

打开database,可以看到笔者之前创建了两个数据库。

MongoDB快速入门_第5张图片

为了演示我们不妨创建一个名为log的数据库,如下图点击新建一个database,起名为log

MongoDB快速入门_第6张图片

MongoDB快速入门_第7张图片

完成后我们就可以看到databases中就会显示我们刚刚创建的log数据库。

MongoDB快速入门_第8张图片

我们希望能够存储用户登录日志,所以我们在这个log数据库中创建一个userLogcollection(这个collection我们可以理解为MongoDB的数据表)

MongoDB快速入门_第9张图片

点击后输出collection名称。

MongoDB快速入门_第10张图片

都完成创建之后,我们对着log数据库点击新建SQL编辑器即可开始操作数据库了

MongoDB快速入门_第11张图片

我们的键入下面这条SQL尝试进行插入操作。

db.userLog.insert({'id':'001','name':'xiaoming'})

如果看到console输出下面这样一段话就说明插入成功了。

MongoDB快速入门_第12张图片

我们不妨使用命令进行查询一下,输入find命令:

db.userLog.find();

可以看到,查询结果输出了我们刚刚插入的数据

MongoDB快速入门_第13张图片

当然MongoDB也支持条件查询,如下图所示,感兴趣的读者可以看看:

MongoDB快速入门_第14张图片

参考文献

MongoDB超详细教程(保姆级)

MongoDB快速入门,掌握这些刚刚好!

实战 | MongoDB的安装配置

MongoDB超详细教程(保姆级)

你可能感兴趣的:(日常配置,mongodb,数据库)