004 CentOS 7.9 mongodb7.0.11安装及配置
https://www.mongodb.com/try/download/shell
https://www.mongodb.com/try/download/community
文章目录
- /etc/mongod.conf
- 在 /etc/systemd/system/ 目录下创建一个名为 mongod.service 的文件
- 重新加载 systemd 配置:
- 启用服务:
- 现在,可以手动启动 MongoDB 服务来测试配置是否正确:
- 检查 MongoDB 服务状态:
- 设置开机自启(可选,因为在上一步启用服务时已经设置了):
- 重启系统测试:
- 数据库操作
- 创建用户:
- 然后,使用新创建的管理员账户登录,并为commentDB数据库创建一个新用户:
- 创建数据库:
- 外部连接
- mongosh
查找 MongoDB 进程 ID
ps aux | grep mongodroot 10384 0.0 0.0 112812 980 pts/0 S+ 10:35 0:00 grep --color=auto mongod
这一行并不是 MongoDB 进程本身,而是执行的 grep mongod 命令产生的进程。当在终端中运行 ps aux | grep mongod 时,grep 命令会在 ps aux 的输出中搜索包含 "mongod" 的行。因此,这个 grep 进程会短暂出现在进程列表中,直到命令执行完毕。这里的 grep --color=auto mongod 就是正在执行的搜索命令,它不属于 MongoDB 服务的一部分,而是用于查找 MongoDB 进程的工具命令。所以,这个进程与 MongoDB 服务的关闭无关。如果想查找正在运行的 MongoDB 进程,应该会在 ps aux | grep mongod 的输出中看到除了 grep 命令之外的另一行,那一行会显示 MongoDB 进程的信息(如果 MongoDB 正在运行的话)。如果 MongoDB 没有运行,那么只会看到 grep 命令本身的进程。在 CentOS 7.9 系统中,这个逻辑是一样的。如果 MongoDB 没有运行,使用 ps aux | grep mongod 只会显示出 grep 的进程,而不会显示出 MongoDB 的进程。如果想关闭 MongoDB,首先需要找到 MongoDB 的进程 ID(PID),然后使用 kill 命令来关闭它,如前面所述。如果找不到 MongoDB 的进程,那可能意味着 MongoDB 并没有运行。确认 MongoDB 是否已安装
rpm -qa | grep mongodb查找 mongod 的路径
sudo find / -name mongod使用 journalctl 查看与 mongod.service 相关的日志
sudo journalctl -u mongod.service如果日志中没有提供足够的信息,可以尝试手动运行 MongoDB,以便在控制台上直接查看错误信息。由于systemd 服务配置中 Type 设置为 forking,MongoDB 会尝试以分叉模式启动,这有时会使错误信息的输出不那么直观。可以手动运行 MongoDB 而不分叉,以便在控制台上看到实时输出:
/usr/tools/mongodb/mongodb-linux-x86_64-rhel70-7.0.11/bin/mongod --config /etc/mongod.conf --fork上面的命令中保留了 --fork 选项,但通常为了调试,应该去掉 --fork 以在控制台查看实时日志输出。正确的调试命令应该是:
/usr/tools/mongodb/mongodb-linux-x86_64-rhel70-7.0.11/bin/mongod --config /etc/mongod.conf
运行此命令后,MongoDB 将尝试启动,并且任何错误消息都会直接打印到控制台。这些错误消息应该能帮助确定问题的根源。常见的问题可能包括:配置文件 /etc/mongod.conf 中的语法错误或配置错误。
MongoDB 数据目录的权限问题。
端口已被其他服务占用。
磁盘空间不足。
其他系统资源限制或依赖问题。
/etc/mongod.conf
processManagement: fork: true
systemLog: destination: file path: /var/log/mongodb.log logAppend: true
storage: dbPath: /data/mongodb.db
net: port: 27017 bindIp: 0.0.0.0 # 允许任何IP连接,生产环境中请限制为特定IP或局域网
security: authorization: enabled # 启用身份验证
这份配置文件做了以下设置:
processManagement.fork: true:指示 MongoDB 在后台运行作为守护进程。
systemLog:配置了日志记录,将日志输出到 /var/log/mongodb.log 文件,并设置为追加模式(logAppend: true)。
storage.dbPath:指定了数据库文件的存储路径为 /data/mongodb.db。
net:设置了 MongoDB 监听的端口为 27017,并且 bindIp 设置为 0.0.0.0,表示接受任何 IP 地址的连接。这在测试环境中是可以的,但在生产环境中应限制为特定的 IP 地址或局域网范围以提高安全性。
security.authorization:启用了身份验证,这意味着连接到 MongoDB 的客户端需要提供有效的用户名和密码。
请确保 /data/mongodb.db 目录存在且 MongoDB 用户有权写入,同时 /var/log/mongodb.log 也需要是可写的。如果这些目录或文件不存在或权限不正确,MongoDB 将无法正常启动。
此外,为了让 MongoDB 作为服务在 CentOS 7.9 上开机自启,还需要创建一个 systemd 服务单元文件,如之前所述。一旦创建了服务文件并启用了服务,MongoDB 就会在系统启动时自动运行。
最后,请确保MongoDB 安装是正确的,并且所有必要的依赖项都已满足。如果遇到任何问题,可以查看 MongoDB 的日志文件以获取更多信息。
在 /etc/systemd/system/ 目录下创建一个名为 mongod.service 的文件
[Unit]
Description=MongoDB Database Server
After=network.target [Service]
Type=forking
ExecStart=/usr/tools/mongodb/mongodb-linux-x86_64-rhel70-7.0.11/bin/mongod --config /etc/mongod.conf
ExecStop=/usr/tools/mongodb/mongodb-linux-x86_64-rhel70-7.0.11/bin/mongod --shutdown --config /etc/mongod.conf
PrivateTmp=true [Install]
WantedBy=multi-user.target
重新加载 systemd 配置:
在创建了新的服务文件或修改了现有的服务文件后,需要通知 systemd 重新加载其配置。
sudo systemctl daemon-reload
启用服务:
要让 MongoDB 在系统启动时自动运行,需要启用该服务。
sudo systemctl enable mongod
现在,可以手动启动 MongoDB 服务来测试配置是否正确:
sudo systemctl start mongod
检查 MongoDB 服务状态:
使用以下命令来验证 MongoDB 是否正在运行:
sudo systemctl status mongod
如果一切正常,状态应该会显示 MongoDB 正在运行。
设置开机自启(可选,因为在上一步启用服务时已经设置了):
如果之前没有启用服务,可以使用以下命令设置 MongoDB 在系统启动时自动运行:
sudo chkconfig mongod on
但请注意,chkconfig 命令在较新的系统上可能已被 systemctl 替代。因此,如果使用的是 CentOS 7 或更高版本,建议使用 systemctl enable mongod。
重启系统测试:
最后,可以重启系统来测试 MongoDB 是否会在启动时自动运行。
sudo reboot
系统重启后,使用 systemctl status mongod 来检查 MongoDB 是否已成功启动。
数据库操作
创建用户:
在MongoDB shell中,切换到admin数据库并创建一个用户管理员账户(如果还没有的话):
use admin;
db.createUser({user: "admin", pwd: "admin_password", roles: [{role: "userAdminAnyDatabase", db: "admin"}]});
然后,使用新创建的管理员账户登录,并为commentDB数据库创建一个新用户:
db.auth("admin", "admin_password");
use commentDB;
db.createUser({user: "abc", pwd: "123456", roles: [{role: "dbOwner", db: "commentDB"}]});
创建数据库:
在MongoDB中,数据库是在第一次存储数据时自动创建的。但是,您可以通过向数据库添加一些数据来手动“创建”它,例如:
use commentDB;
db.auth("abc", "123456");
db.comments.insert({text: "Hello, MongoDB!"});
这将“创建”commentDB数据库(如果它还不存在的话)并在comments集合中插入一条记录。
外部连接
mongodb://abc:123456@ip地址:27017/commentDB?authMechanism=SCRAM-SHA-256&authSource=commentDB
mongosh
使用RPM包安装mongosh:
如果你选择使用RPM包来安装mongosh,你通常会得到一个已经编译好且包含了所有必要依赖(包括OpenSSL)的可执行文件。这意味着你不需要单独安装OpenSSL库,因为RPM包已经包含了所需的版本。
优点:安装简便,无需额外配置。
缺点:可能不包含最新版本的OpenSSL,这取决于RPM包的更新频率。
使用OpenSSL 1.1:
OpenSSL 1.1是一个稳定且广泛使用的加密库版本。如果你的系统中还没有安装OpenSSL,或者安装的是较旧版本,你可能需要手动安装或更新到OpenSSL 1.1。
优点:稳定性高,兼容性好。
缺点:可能不是最新的加密技术,需要手动安装或更新。
使用OpenSSL 3:
OpenSSL 3提供了最新的加密技术和安全特性。如果你的应用需要最高级别的安全性,或者你想利用OpenSSL 3提供的新功能,那么这是一个好选择。
优点:最新的加密技术和安全特性。
缺点:可能与某些旧系统或应用不完全兼容,需要手动安装。
对于大多数用户来说,使用RPM包安装mongosh是最简单的方法。它避免了手动安装和配置OpenSSL的复杂性,并且通常能够满足基本的安全需求。
然而,如果你对安全性有更高的要求,或者你的应用需要利用OpenSSL 3的最新特性,那么手动安装OpenSSL并配置mongosh以使用它可能是一个更好的选择。
在选择时,请考虑你的具体需求、系统的兼容性以及你愿意投入多少时间和精力来进行安装和配置。
注意:在进行任何安装或更新之前,请确保备份重要数据,并仔细阅读相关文档以了解可能的风险和注意事项。
至于下载时的选择,如果你决定使用RPM包安装mongosh,请从MongoDB官方网站下载适用于CentOS 7.9的RPM包。如果你选择手动安装OpenSSL并配置mongosh,你需要从OpenSSL的官方网站下载适当的版本(1.1或3),并按照相关指南进行安装和配置。
sudo rpm -ivh mongodb-mongosh-2.2.6.x86_64.rpm
相关文章:
004 CentOS 7.9 mongodb7.0.11安装及配置
https://www.mongodb.com/try/download/shell https://www.mongodb.com/try/download/community 文章目录 /etc/mongod.conf在 /etc/systemd/system/ 目录下创建一个名为 mongod.service 的文件重新加载 systemd 配置:启用服务:现在,可以手动…...
Docker安装Redis(云服务器)
准备: 在云服务器中开启6370端口号 docker run -d --name redis -p 6379:6379 redis 这条命令使用docker运行一个名为"redis"的容器,映射容器的6379端口到主机的6379端口,并且使用redis镜像来运行容器。REDIS是一个开源的内存数据…...
springboot中抽象类无法注入到ioc容器
1、背景 在写代码时,发现service接口有两个实现类,并且两个实现类中没有对类名重命名,属性注入的时候也没有使用byName或Qualifier,正确情况下会发生多实现报错的问题,以前对这个问题进行解析过。 2、调试过程 我想…...
Java关键字大冒险:深入浅出地理解Java的精髓
Java编程语言中的关键字就像是魔法咒语,每一个都有自己独特的作用。在这篇博客中,我们将探讨Java中最常见的关键字,并通过有趣的例子和形象的比喻,让你轻松掌握它们的用法。 1. public: 万能钥匙 public关键字是Java中的“万能钥…...
Android Kotlin 打开相册选择图片(多选)
1. 核心代码 打开系统相册功能,本代码使用两种方式打开本地相册,startActivityForResult 已经废弃,可以使用新的方式。 package com.example.facedetectordemoimport android.content.pm.PackageManager import androidx.appcompat.app.App…...
java学习路径
ProcessOn Mindmap...
[线程与网络] 网络编程与通信原理(四):深入理解传输层UDP与TCP协议
🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (92平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀Java …...
IEEE编程语言排行榜:深度解析编程语言的四大维度、五大趋势、六大热门与七大挑战
IEEE编程语言排行榜:深度解析编程语言的四大维度、五大趋势、六大热门与七大挑战 在信息技术领域,编程语言排行榜一直是衡量各种编程语言流行度和影响力的重要指标。IEEE(电气电子工程师协会)作为全球最具影响力的科技专业组织之…...
【C++面试50题】
以下是针对C程序员面试可能遇到的一些问题,涵盖了从基础语法、面向对象、STL、内存管理、模板、异常处理、并发编程等多个方面。 ### 基础概念与语法 1. C与C的主要区别是什么? 2. 什么是构造函数和析构函数?它们何时被调用? 3. 什…...
外汇天眼:ESMA发布针对在投资服务中使用人工智能的公司的指导意见
欧洲证券和市场管理局(ESMA),欧盟的金融市场监管机构和监督机构,发布了一份声明,为在向零售客户提供投资服务时使用人工智能技术(AI)的公司提供初步指导。 尽管人工智能的普及仍处于初期阶段&am…...
【前缀和 记忆化搜索】LeetCode1444. 切披萨的方案数
本文涉及的基础知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 动态规划 记忆化搜索 LeetCode1444. 切披萨的方案数 给你一个 rows x cols 大小的矩形披萨和一个整数 k ,矩形包含两种字符: ‘A’ ÿ…...
异常处理1--5.31
try--catch--finally格式: try{ }catch(错误类型){ }finally{ } 执行情况: package javatest5;public class test {public static void main(String[] args) {int num115;int num20;try{System.out.println("商等于:"num1/num…...
AI免费插件 批量条码大师,支持100多种条码类型
没想到在网上看到一款和之前 悟空条码 类似的条码插件,叫批量条码大师,他做的比 悟空条码 功能更强,界面更美观,特分享出来给大家。 本插件采用了BWIPJS条码库,支持110种条码、二维码的生成; 支持批量生成,…...
使用 Django 连接 MySQL 数据库
文章目录 步骤一:安装必要的库和驱动步骤二:配置数据库连接步骤三:执行数据库迁移步骤四:开始使用 MySQL 数据库创建一个模型迁移模型到数据库使用模型进行数据操作创建新记录:查询记录:更新记录࿱…...
【谷歌开发者月刊】五月内容汇总,Google I/O 点燃您的创新灵感
五月因 Google I/O 大会的成功举办而备受瞩目,我们在为开发者们带来技术更新的同时,更提供了丰富的学习资源。一起在本期月刊中回顾精彩内容,带着学习热情继续探索技术的更新与发展吧! 本月看点 精彩看点多多,请上下滑…...
wpf 实现长时间未操作自动退出登录
思路 在WPF应用程序中实现长时间未操作自动退出,主要思路是先收集用户操作行为,用一个全局变量记录用户最后操作时间,再用一个异步线程去监控用户的最后操作时间和当前时间进行比较如果超过了设定时间认为长时间未操作自动退出登录并显示相关…...
pytorch学习笔记3
标量数据 标量数据通常指的是单个数值,比如一个损失值、准确率、学习率等。这些单个的数值数据可以被记录下来,用于分析模型的训练过程、性能等。在代码中,writer.add_scalar() 的作用就是将这些标量数据添加到日志中,以便后续在可…...
开源监控工具monit安装部署
Monit 简介 Monit是一个轻量级(500KB)跨平台的用来监控Unix/linux系统的开源工具。部署简单,并且不依赖任何第三方程序、插件或者库。 Monit可以监控服务器进程、文件、文件系统、网络状态(HTTP/SMTP等协议)、远程主机、服务器资源变化等等。…...
Python 时间戳转时间
一、 10 位 时间戳 ,秒级 转换为时间 方式一: import timetimeStamp 1717149862 timeArray time.localtime(timeStamp) timeStr time.strftime("%Y-%m-%d %H:%M:%S", timeArray) print(timeStr) 输出: 2024-05-31 18:04:22方式二…...
【网络层】IP地址基础 与 子网掩码
文章目录 IP地址基础IP地址概念IP地址分类公网地址和私网地址 子网掩码子网掩码作用默认子网掩码网络地址、主机地址、广播地址 IP地址基础 IP地址概念 IP地址:IP Address 在网络中,通信节点都需要有一个IP地址 IP地址以点分十进制表示,有…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu 2、Hello World fn main() { println…...
解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...
GraphQL 实战篇:Apollo Client 配置与缓存
GraphQL 实战篇:Apollo Client 配置与缓存 上一篇:GraphQL 入门篇:基础查询语法 依旧和上一篇的笔记一样,主实操,没啥过多的细节讲解,代码具体在: https://github.com/GoldenaArcher/graphql…...
怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)
+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...
命令行关闭Windows防火墙
命令行关闭Windows防火墙 引言一、防火墙:被低估的"智能安检员"二、优先尝试!90%问题无需关闭防火墙方案1:程序白名单(解决软件误拦截)方案2:开放特定端口(解决网游/开发端口不通)三、命令行极速关闭方案方法一:PowerShell(推荐Win10/11)方法二:CMD命令…...
