MongoDB

一、MongoDB

MongoDB是一种开源、面向文档的分布式数据库系统,它采用NoSQL(非关系型数据库)模型,由C++编写,并设计用于处理大量数据和高并发场景。

以下是关于MongoDB数据库的主要特点和功能概述:

1. 面向文档:

MongoDB以JSON-like的文档形式存储数据,每个文档可以拥有动态模式,即一个集合中的文档可以有不同的字段和结构,这使得它非常适合处理半结构化和非结构化的数据。

2. 灵活的数据模型:

不同于传统的关系型数据库,MongoDB不强制预先定义严格的表结构,允许开发者根据需求自由调整数据结构。

3. 分布式存储:

MongoDB支持水平扩展,通过分片技术将数据分布在多个服务器上,能够有效应对大数据量和高并发访问的需求。

4. 高性能:

MongoDB的设计旨在提供高性能读写操作,支持快速的索引创建和查询优化,以及在内存中缓存常用数据等功能来提升性能。

5. 自动分片与负载均衡:

MongoDB能自动管理数据分布并进行负载均衡,确保整个集群的高效运行。

6. 强大的查询能力:

MongoDB支持丰富的查询表达式和聚合框架,可以执行复杂的条件查询、更新、排序、聚合等多种操作。

7. 高可用性与容错性:

通过复制集(Replica Set)实现数据冗余备份和故障转移,保证服务的连续性和数据安全性。

8. 支持多种语言驱动程序:

MongoDB提供了对多种编程语言的支持,包括但不限于Python、Java、C#、Node.js、PHP等,方便开发人员进行应用程序集成。

9. Schema Validation:

自MongoDB 3.2版本开始,支持了schema验证功能,可以在集合级别设置规则来约束插入或更新的数据格式。

10. 安全认证与授权:

MongoDB支持用户身份验证和角色权限管理,可以细粒度地控制不同用户的数据库操作权限。

二、安装小记

MongoDB从发行版本分为社区版和企业版,从部署方式可分为单机、主从、副本集(Replica Set)和分片(Sharding)四种模式,其中主从模式已经不建议使用。本次安装因环境受限,仅安装单机模式,操作系统为CentOS 7.8.2003,数据库版本为3.6.19 Enterprise。

使用vim /etc/yum.repos.d/mongodb-enterprise.repo创建yum源,文件内容如下图,使用yum install -y mongodb-enterprise完成安装。

安装教程:https://blog.csdn.net/qq_45790877/article/details/129286309

三、MongoDB介绍

3.1 MongoDB配置文件

通过yum安装完成后,配置文件默认位于/etc/mongod.conf,文件内容使用YAML格式,配置参数前需空两格,如下图所示。默认启用的配置为系统日志、存储、进程管理和网络,身份鉴别功能配置参数位于security下,需管理员手动开启并配置。其他如传输加密、数据加密、安全审计等功能均在此配置。

关于bindIp,发现有部分人对它产生了误解,这里简单说明一下,bindIp是对服务器上指定的ip接口进行监听,如下图所示参数为127.0.0.1,那么MongoDB仅对本机提供服务,网段内的其他服务器无法连接该MongoDB;假设这个参数为192.168.172.134,那么网段内的其他服务器均可连接该MongoDB,而本机无法直接,需通过host参数指定192,168.172.134才可连接MongoDB

3.2 MongoDB启动

MongoDB有三种启动方式,1)通过命令systemctl start mongod.serivce启动,该方式将身份鉴别配置写入配置文件,启动时直接调用配置文件中启用的配置。如下图所示,无报错则启动成功;

2)通过命令mongod -f /etc/mongod.conf启动,该方式将身份鉴别配置写入任意位置的配置文件,启动时指定配置文件调用已启用的配置。如下图所示,提示进程启动成功;

3.3 MongoDB登录

MongoDB一般通过mongo shell或者第三方管理工具连接(如navicat),通过mongo shell连接可直接在操作系统命令行输入mongo登录数据库,如下图所示为未开启身份鉴别功能的界面:

如果在配置文件中修改了端口号,还需指定port参数才可连接,如果bindIp不为127.0.0.1或0.0.0.0,则还需要指定ip才能连接成功。

开启身份鉴别功能后无警告信息,操作前必须使用db.auth()进行登录。

通过第三方工具连接前需先在配置文件中绑定与外部连接的ip,如主机的本地ip为192.168.172.134,则在配置文件中bindIp处添加此ip,如下图所示:

填写服务器ip后添加即可连接。

3.4 MongoDB账户及角色

在MongoDB刚安装完成时,默认未启用身份鉴别功能且未不存在默认账户,仅存在默认的数据库角色,需管理员登录数据库创建管理员账户后再开启身份鉴别功能。在MongoDB中创建账户时除账户、口令外,还需指定角色及可访问的数据库,创建账户时的roles中包括role和db两个参数,可指定多个role和db,role为分配给账户的角色,通过角色来实现权限的控制,db为指定可以访问的数据库,该账户创建成功后仅可访问指定的数据库。如下表列出的为MongoDB中默认的角色。

分类

角色

简介

数据库用户角色

read

允许用户读取指定数据库

readWrite

允许用户读写指定数据库

数据库管理角色

dbAdmin

指定数据库的管理员

dbOwner

代表数据库所有者,拥有最高该数据库最高权限。比如新建索引等

userAdmin

允许用户向system.users写入,可以找指定数据库里创建、删除和管理用户

集群管理角色

clusterAdmin

/

clusterManager

/

clusterMonitor

/

hostManager

/

备份恢复角色

backup

备份功能账户

restore

还原功能账号

管理所有数据库角色

readAnyDatabase

赋予用户所有数据库的读权限

readWriteAnyDatabase

赋予用户所有数据库的读写权限

userAdminAnyDatabase

赋予用户所有数据库的userAdmin权限

dbAdminAnyDatabase

赋予用户所有数据库的dbAdmin权限

超级用户角色

root

提供对readWriteAnyDatabase,dbAdminAnyDatabase,userAdminAnyDatabase,clusterAdmin,恢复和备用组合的操作和所有资源的访问。

内部角色

__system

提供对数据库中的任何 object 采取任何操作的权限。**除了在特殊情况下,不要将此角色分配给代表 applications 或人工管理员的用户 objects。

通过mongo命令连接后,使用use admin切换至admin数据库,通过如下命令创建管理员账户:

db.createUser(  {    user: "dba",    pwd: "dba",    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]  })

登录:db.auth(“dba”,”dba”)

接下来可到配置文件中开启身份鉴别功能。

3.5 MongoDB关闭

如需管理MongoDB服务,可通过以下几种方式实现。

使用systemctl start mongod.service启动后,可使用systemctl stop mongod.service关闭MongoDB。

启动失败解决办法:

1创建配置文件:

    sudo nano [lc1] /etc/systemd/system/mongodb.service

2.在里面追加文本:

   [Unit]

   Description=High-performance, schema-free document-oriented database[lc2] 

   After=network.target

表示 MongoDB 服务将在网络服务启动后启动。这是一种依赖关系,确保在网络服务准备就绪后再启动 MongoDB。

   [Service]

   User=mongodb

   ExecStart=/usr/bin/mongod --quiet[lc3]  --config /etc/mongod.conf

   [Install]

   WantedBy=multi-user.target[lc4] 

在这种模式下,系统进入了多用户状态,允许多个用户通过网络或本地登录系统并运行各种服务。

3.按ctrl+X退出

4.启动服务

  sudo systemctl start mongodb

  sudo systemctl status mongodb

5.让它永久启动

     sudo systemctl enable mongodb

ps -ef | grep mongo: ps -ef 是用标准的格式显示进程的

使用mondog启动后可在mongo shell中使用db.shutdownServer()关闭MongoDB。

除上述两种方法外,还可通过kill -9 加上mongo服务的pid强制关闭mongo进程。或者mongod --config ./mongodb.conf --shutdown

相关推荐

  1. <span style='color:red;'>mongoDB</span>

    mongoDB

    2024-03-13 05:28:11      49 阅读
  2. <span style='color:red;'>MongoDB</span>

    MongoDB

    2024-03-13 05:28:11      29 阅读
  3. <span style='color:red;'>MongoDB</span>

    MongoDB

    2024-03-13 05:28:11      39 阅读
  4. MongoDB

    2024-03-13 05:28:11       29 阅读
  5. mongodb

    2024-03-13 05:28:11       28 阅读
  6. <span style='color:red;'>MongoDB</span>

    MongoDB

    2024-03-13 05:28:11      24 阅读
  7. <span style='color:red;'>MongoDB</span>

    MongoDB

    2024-03-13 05:28:11      19 阅读
  8. MongoDB

    2024-03-13 05:28:11       19 阅读
  9. <span style='color:red;'>mongodb</span>

    mongodb

    2024-03-13 05:28:11      14 阅读
  10. <span style='color:red;'>Mongodb</span>

    Mongodb

    2024-03-13 05:28:11      18 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-13 05:28:11       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-13 05:28:11       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-13 05:28:11       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-13 05:28:11       20 阅读

热门阅读

  1. GITLAB - CI 常用语法小记

    2024-03-13 05:28:11       24 阅读
  2. python中的四大内置容器

    2024-03-13 05:28:11       22 阅读
  3. MongoDB聚合运算符:$documentNumber

    2024-03-13 05:28:11       21 阅读
  4. Apache Tomcat环境搭建

    2024-03-13 05:28:11       20 阅读
  5. docker直接下载太慢,更换国内靠谱镜像源

    2024-03-13 05:28:11       18 阅读
  6. vue双向绑定/小程序双向绑定?

    2024-03-13 05:28:11       21 阅读
  7. 从SQL质量管理体系来看SQL审核(1)

    2024-03-13 05:28:11       20 阅读
  8. 面试经典-4-LRU 缓存

    2024-03-13 05:28:11       16 阅读