从零开始:在linux系统安装MongoDB数据完整指南 新手常用命令

news2024/9/25 16:37:45

1 前言

  • MongoDB 是为快速开发互联网应用而设计的数据库系统。
  • MongoDB 的设计目标是极简、灵活、作为 Web 应用栈的一部分。
  • MongoDB 的数据模型是面向文档的,所谓文档是一种类似于json的结构。

官网教程:https://www.mongodb.com/docs/manual/

2 安装部署

  • MongoDB 的版本偶数版本为稳定版,奇数版本为开发版。
  • MongoDB 对为 32 位系统支持不佳,所以3.2版本疑惑没有再对32位系统的支持。
  • 在6.0版本以后,MongoDB 将客户端与服务端进行了分离需要进行单独下载。

本次安装环境如下:

程序版本
MongoDB7.0.6
Mongosh2.1.4

2.1 windows 安装

2.1.1 windows (Server端)

下载

https://www.mongodb.com/try/download/community

配置环境变量:

C:\Program Files\MongoDB\Server\7.0\bin

创建数据库存放目录:

C:\data\db

2.1.2 windows (客户端)

下载方式一:

在服务端版本中,自带powershell下载脚本: InstallCompass.ps1

2.2 cents7 安装

2.2.1 server 下载安装

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

下载方式二:

https://www.mongodb.com/try/download/shell

image.png

wget https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-7.0.6.tgz
tar -zxvf mongodb-linux-x86_64-rhel70-7.0.6.tgz
mv mongodb-linux-x86_64-rhel70-7.0.6 mongodb
cd mongodb

将MongoDB服务添加到 service 启动

2.2.2 客户端

https://github.com/mongodb-js/mongosh/releases

tar -zxvf mongosh-2.1.4-linux-x64.tgz
mv mongosh-2.1.4-linux-x64 mongosh
2.2.3 环境变量
vim /etc/profile
export PATH=/usr/local/mongodb/mongodb/bin:$PATH
export PATH=/usr/local/mongodb/mongosh/bin:$PATH
source /etc/profile

2.3 Docker容器安装

3 服务端启动

原创:有勇氣的牛排
https://www.couragesteak.com/article/458

2.3 配置服务端 mongodb.conf

mkdir -p /usr/local/mongodb/{db, log}
chmod 777 /usr/local/mongodb/*
vim /usr/local/mongodb/mongodb.conf
systemLog:
  destination: file
  logAppend: true
  path: "/usr/local/mongodb/log/mongod.log"

storage:
  dbPath: "/usr/local/mongodb/db"

processManagement:
  fork: true
  pidFilePath: "/usr/local/mongodb/mongod.pid"
  timeZoneInfo: "/usr/share/zoneinfo"

net:
  port: 27017
  bindIp: 0.0.0.0
  
security:
  authorization: enabled

3.1 配置文件启动/关闭

启动

mongod --config /usr/local/mongodb/mongodb.conf

关闭

mongod -f /usr/local/mongodb/mongodb.conf --shutdown

3.2 查看是否启动

查看进程

ps -ef | grep mongodb

查看MongoDB进程

检查端口

netstat -tunlp | grep mongo

检查MongoDB端口

3.4 停止服务

kill进程(不推荐)

kill -9 进程号

MongoDB 内置命令

db.shutdownServer()

3.5 安全优化

3.5.1 不推荐root启动

创建普通用户mongo(禁用登录),运行mogod服务端

# 创建一个名为 "mongo" 的用户组,-g 777 指定组标识符(GID)为 777
groupadd mongo -g 777

# 创建一个属于 "mongo" 用户组的用户 "mongo"
# -g 777 指定主组为 "mongo",-M 表示不创建用户的主目录
# -s /sbin/nologin 指定用户登录时使用的Shell为 /sbin/nologin,通常用于服务账号
useradd mongo -g 777 -M -s /sbin/nologin

# 查看用户 "mongo" 的详细信息,包括用户标识符(UID)、组标识符(GID)等
id mongo
3.5.2 启动脚本 systemd.service 脚本
vim /etc/systemd/system/mongodb.service
[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
ExecStart=/usr/local/mongodb/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf --shutdown
PrivateTmp=true

[Install]
WantedBy=multi-user.target

目录授权

sudo chown -R mongo:mongo /usr/local/mongodb/*

重载配置文件

systemctl daemon-reload

启动并且设置开机启动

systemctl start mongodb

关闭

systemctl stop mongodb

查看启动状态

systemctl status mongodb

设置永久开机自启

systemctl enable mongodb
3.5.3 大内存页 关闭 hugepage

必须永久生效

vim /etc/rc.d/rc.local
echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
echo "never" > /sys/kernel/mm/transparent_hugepage/defrag

添加执行权限

chmod +x /etc/rc.d/rc.local

4 客户端连接

4.1 基本连接

规则如下:

mongo ip:port/数据库  -u 用户名 -p 密码

案例

# 无用户验证
mongosh 192.168.56.20:27017

# 用户验证
mongosh 192.168.56.20:27017 -u cs_admin -p 123456

MongoDB连接

程序连接

mongodb://<username>:<password>@node1:27017,node2:27017,node3:27017/?replicaSet=myReplicaSet

4.2 初始化管理员用户

然后,在 MongoDB shell 中执行以下命令创建一个管理员用户(确保替换 <admin_username><admin_password> 为实际的用户名和密码):

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

启动

mongod --config /usr/local/mongodb/mongodb.conf

关闭

mongod -f /usr/local/mongodb/mongodb.conf --shutdown

5 mongo-express 可视化管理

vim docker-compose.yml
version: '3'
services:
  mongo-express:
    image: mongo-express
    environment:
      - ME_CONFIG_MONGODB_SERVER=mongo  # 指定 MongoDB 服务器的主机名(这是 MongoDB 容器的服务名称)
    ports:
      - "8081:8081"
    depends_on:
      - mongo
  mongo:
    image: mongo
    ports:
      - "27017:27017"
version: '3'
services:
  mongo-express:
    image: mongo-express
    environment:
      - ME_CONFIG_MONGODB_SERVER=mongo  # 指定 MongoDB 服务器的主机名(这是 MongoDB 容器的服务名称)
    ports:
      - "8081:8081"

启动

docker-compose up -d

6 数据库操作

授权用户数据库

创建超级用户

db.createUser({user:"admin",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"},{role:"readWriteAnyDatabase",db:"admin"}]})
 
 
// readWriteAnyDatabase:只在admin数据库中可用,赋予对应用户所有数据库的读写权限
// userAdminAnyDatabase:只在admin数据库中可用,赋予对应用户所有数据库的userAdmin权限
db.auth("admin","123456")

创建新数据库

use cs_tool
db.test.insert({})

切换到数据库 cs_tool,创建一个读写用户

db.createUser({user:"user_B",pwd:"123456",roles:[{role:"readWrite",db:"cs_tool"}]})

6.1 创建/切换数据库

use 数据库名

MongoDB创建/选择数据库

创建数据库后,只有有数据库后,库才会生成

6.2 查询

6.2.1 查询所有数据库
show dbs
test> show dbs
test				# 登录时默认的库
admin   132.00 KiB	# 系统预留库,Mongodb的系统管理库,如停止数据库进程,需进到这里
config  108.00 KiB	# 本地预留库,存储关键日志
local   256.00 KiB	# 配置信息库,保存如分片的信息
6.2.2 查询库中的集合

相当于:show tables;

show collections

6.2 删除数据库

db.dropDatabse()

5.2 创建集合、插入数据

db.user.insertOne({name: "cs", age: "20", id: 1})

报错、警告

open file too low

**Soft rlimits for open file descriptors too low**

vim /etc/security/limits.conf
*         soft    nofile    64000
*         hard    nofile    64000

Soft rlimits for open file descriptors too low

vm.max_map_count is too low

sudo sysctl -w vm.max_map_count=262144

为了使这个更改永久生效,您可以将其添加到 /etc/sysctl.conf/etc/sysctl.d/ 下的一个文件中。

echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1949693.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leaflet.VectorGrid加载点矢量瓦片鼠标点击报Cannot read properties of undefined的解决办法

在使用Leaflet.VectorGrid1.3.0进行点矢量瓦片数据的渲染时&#xff0c;再打开事件交互后&#xff0c;以mouseover为例&#xff0c;当事件添加后&#xff0c;鼠标悬停时&#xff0c;并没有展示相应的数据&#xff0c;反而在控制台下方报错。如下方所示&#xff1a; 本文将介绍在…

ZStack Cloud 5.1.8正式发布——GPU运维、物理机硬件监控、克隆云主机网络配置三大亮点简析

云轴科技ZStack Cloud云平台是遵循“简单、弹性、健壮、智能”的“4S”特性的私有云和无缝混合云产品。ZStack Cloud 5.1.8版本正式发布&#xff0c;从用户业务场景和实际需求出发&#xff0c;丰富和完善平台功能&#xff0c;推出一系列重要功能和多项改进&#xff0c;覆盖云主…

[vue3]引入模块出现红色波浪,但是可以正常运行,去除红色波浪号

问题1 解决问题1&#xff1a; 在vite-env.d.ts添加以下语句 declare module "*.vue" {import { DefineComponent } from "vue"const component: DefineComponent<{}, {}, any>export default component }

.NET威胁情报 | 某水务系统堆叠注入可RCE

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

ROM修改进阶教程------修改rom 开机自动安装指定apk 自启脚本完整步骤解析

rom修改的初期认识 在解包修改系统分区过程中。很多客户需求刷完rom后自动安装指定apk。这种与内置apk有区别。而且一些极个别apk无法内置。今天对这种修改rom刷入机型后第一次启动后自动安装指定apk的需求做个步骤解析。 在前期博文中我有做过说明。官方系统固件解…

【Qt】Qt容器和STL容器的区别

1、简述 Qt容器和STL容器略有不同,作为一个Qter,应该知道它们之间的异同。 Qt容器官网介绍:https://doc.qt.io/qt-5/containers.html STL容器官网介绍:https://zh.cppreference.com/w/cpp/container 2、Qt容器和STL容器的对应关系 注意:QList 与 std::list 无关,QSet …

Infuse Pro for Mac全能视频播放器

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件&#xff0c;将其从左侧拖入右侧文件夹中&#xff0c;等待安装完毕2、应用程序显示软件图标&#xff0c;表示安装成功 三、运行测试安装完成&#xff01;&#xff01;&#xff01; 效果 一、下载软件 下载软件…

每天五分钟深度学习:向量化方式完成逻辑回归m个样本的前向传播

本文重点 我们已经知道了向量化可以明显的加速程序的运行速度,本节课程将使用向量化来完成逻辑回归的前向传播,不使用一个for循环。 逻辑回归的前向传播 我们先来回忆一下逻辑回归的前向传播,如果我们有m个训练样本,首先对第一个样本进行预测,我们需要计算z,然后计算预…

【QT】SARibbon编译安装开启frameless(QWindowkit)

1.cmake开启frameless 2.检查cmakecache 3.下载编译qwindowkit 拉取saribbon时请 git clone https://github.com/czyt1988/SARibbon.git --recursive使用--recursive可以拉取第三方库 手动下载&#xff1a;https://github.com/stdware/qwindowkit 4.cmake构建 和 visual stu…

qt自定义控件(QLabel)

先创建自定义控件类painter_label 1.自定义类必须给基类传入父窗口指针 2.重写控件中的方法 3.在UI中创建一个QLabel,右键“提升为”&#xff0c;输入类名

后台管理系统登录安全和权限要求

一、前言 几乎所有的系统都有后台管理系统&#xff0c;后台登录需要账号和密码&#xff0c;后台管理员权限需要有控制。所有管理员的操作都应该有操作日志。 二、存在的问题 现在很多系统只需要账号和密码就能登录&#xff0c;有的还是简单账号和简单密码&#xff0c;就是弱口…

在WPF中使用WebView2详解

Microsoft Edge WebView2 Microsoft Edge WebView2 控件允许在本机应用中嵌入 web 技术(HTML、CSS 以及 JavaScript)。 WebView2 控件使用 Microsoft Edge 作为绘制引擎&#xff0c;以在本机应用中显示 web 内容。 使用 WebView2 可以在本机应用的不同部分嵌入 Web 代码&…

ScriptableObject使用

资料 Scripting/Create modular game architecture in Unity with ScriptableObjects 脚本文档 基础 SO是一个Unity对象&#xff0c;继承UnityEngine.Objec&#xff0c; SO最大的特点是实例文件可共享&#xff0c;有点类似静态数据&#xff0c;同一个实例文件可被多个对象引…

vue3前端开发-小兔鲜项目-form表单的统一校验

vue3前端开发-小兔鲜项目-form表单的统一校验&#xff01;实际上&#xff0c;为了安全起见&#xff0c;用户输入的表单信息&#xff0c;要满足我们的业务需求&#xff0c;参数类型等种种标准之后&#xff0c;才会允许用户向服务器发送登录请求。为此&#xff0c;有必要进行一次…

set_clock_groups -physically_exclusive 和-asynchronous是否有必要同时设置

引言 vc-spyglass sdc检查时遇到的问题 正如vc spyglass sdc check提示Error: 当两个时钟设置成物理互斥或逻辑互斥时&#xff0c;需要另外加上这两个时钟是异步设置的约束。 个人经历&#xff1a; 由于本人经验尚浅&#xff0c;之前遇到的项目&#xff0c;个人理解是设置了物…

W30-python03-pytest+selenium+allure访问百度网站实例

此篇文章为总结性&#xff0c;将pystest、selenium、allure结合起来 功能如下&#xff0c;web自动化&#xff0c;输入baidu网站&#xff0c;搜索“雷军”、打开网页中第一条内容 tools.webkeys 相关文件见附件。 pytestsel.py如下&#xff1a; import time import re impor…

全链路追踪 性能监控,GO 应用可观测全面升级

作者&#xff1a;古琦 01 介绍 随着 Kubernetes 和容器化技术的普及&#xff0c;Go 语言不仅在云原生基础组件领域广泛应用&#xff0c;也在各类业务场景中占据了重要地位。如今&#xff0c;越来越多的新兴业务选择 Golang 作为首选编程语言。得益于丰富的 RPC 框架&#xff…

在 Windows 搭建 flink 运行环境并模拟流数据处理

一、引入 在大数据场景中,开发者追求高效与灵活,Linux 系统以其稳定性成为众多组件的首选,但在资源有限的情况下,在本机搭建一个 Linux 虚拟机集群却显得过于笨重,启动、运行占资源,需要配置网络,无法和windows共享资源,尤其是对只有 8GB 内存的 Windows 系统用户来说…

C++内存管理(候捷)第五讲 笔记

GNU C对allocators的描述 new_allocator 和malloc_allocator&#xff0c;它们都没有特别的动作&#xff0c;无非底部调用operator new和malloc。它们没有用内存池 区别&#xff1a;::operator new是可重载的 智能型的allocator&#xff0c;使用内存池&#xff0c;分一大块然后…

lua 游戏架构 之 游戏 AI (四)ai_autofight_find_target

定义一个名为 ai_autofight_find_target 的类&#xff0c;继承自 ai_base 类。 lua 游戏架构 之 游戏 AI &#xff08;一&#xff09;ai_base-CSDN博客文章浏览阅读237次。定义了一套接口和属性&#xff0c;可以基于这个基础类派生出具有特定行为的AI组件。例如&#xff0c;可…