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

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: filelogAppend: truepath: "/usr/local/mongodb/log/mongod.log"storage:dbPath: "/usr/local/mongodb/db"processManagement:fork: truepidFilePath: "/usr/local/mongodb/mongod.pid"timeZoneInfo: "/usr/share/zoneinfo"net:port: 27017bindIp: 0.0.0.0security: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-expressenvironment:- ME_CONFIG_MONGODB_SERVER=mongo  # 指定 MongoDB 服务器的主机名(这是 MongoDB 容器的服务名称)ports:- "8081:8081"depends_on:- mongomongo:image: mongoports:- "27017:27017"
version: '3'
services:mongo-express:image: mongo-expressenvironment:- 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://xiahunao.cn/news/3267199.html

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

相关文章

【专题】逻辑代数基础

1. 基本概念 逻辑&#xff1a;事物间的因果关系。 逻辑运算&#xff1a;逻辑状态按照指定的某种因果关系继续推理的过程。 逻辑代数&#xff1a;描述客观事物逻辑关系的数学方法&#xff0c;又称布尔代数。 逻辑变量&#xff1a;逻辑代数中的变量。 二值逻辑中&#xff0c;…

解决win10家庭版找不到Hyper-V的问题

Windows 10家庭版在默认的“启用或关闭Windows功能”中不直接包含Hyper-V选项&#xff0c;但可以通过手动步骤来启用它。以下是详细的解决方案&#xff1a; 步骤一&#xff1a;检查电脑是否支持Hyper-V 首先&#xff0c;确认电脑硬件是否支持Hyper-V功能。 打开Windows Powe…

一文弄懂 Nginx

文章目录 1.第⼀部分&#xff1a;Nginx基础回顾1.1 正向代理&#xff08;Forward Proxy&#xff09;1.2 反向代理&#xff08;Reverse Proxy&#xff09;1.3 Nginx的特点 2. 第⼆部分&#xff1a;Nginx核⼼配置⽂件解读2.1 全局块2.2 events块2.3 http块2.4 示例配置 全局块配置…

libevent入门篇

文章目录 概述下载编译目录samplehello-world初始化创建监听器处理连接处理信号 build 小结 概述 libevent 和 libev 都是由 c 实现的异步事件库&#xff1b;注册异步事件&#xff0c;检测异步事件&#xff0c;根据事件的触发先 后顺序&#xff0c;调用相对应回调函数处理事件…

【Test】一篇文章带你深入详细了解 QWidget 的属性

文章目录 1. 初步认识控件 QWidget2. QWidget2.1 enable 属性2.2 geometry 属性2.3 WindowFrame 的影响2.4 windowTitle 属性2.5 windowIcon 属性2.6 使用 qrc 文件管理资源2.7 QWidget 控件的 windowOpacity 属性2.8 QWidget 的 cursor 属性2.9 QWidget 的 font 属性2.10 QWid…

项目管理中的常用工件(二):可视化工件

项目管理中的常用工件&#xff08;二&#xff09;&#xff1a;可视化工件 亲和图&#xff08;affinity diagram&#xff09;因果图&#xff08;cause-and-effect diagram&#xff09;直方图&#xff08;histogram&#xff09;流程图&#xff08;flowchart&#xff09;散点图&am…

【反证法】932. 漂亮数组

本文涉及知识点 分治 数学 反证法 LeetCode932. 漂亮数组 如果长度为 n 的数组 nums 满足下述条件&#xff0c;则认为该数组是一个 漂亮数组 &#xff1a; nums 是由范围 [1, n] 的整数组成的一个排列。 对于每个 0 < i < j < n &#xff0c;均不存在下标 k&#x…

Sip for Mac:强大的屏幕取色软件

Sip for Mac是一款功能强大的屏幕取色工具软件&#xff0c;专为设计师、开发者和创作者打造。这款软件以其精准的取色功能和丰富的颜色管理选项而备受好评。 Sip的核心功能是提供多种取色工具&#xff0c;包括拾色器、取色板和屏幕取色等&#xff0c;使用户能够轻松地从屏幕上…

掌握AJAX技术:从基础到实战

文章目录 **引言****1. 什么是AJAX&#xff1f;****2. AJAX的工作原理**AJAX 示例使用 Fetch API 实现 AJAX **3. 如何在项目中使用AJAX****4. 处理AJAX请求的常见问题****5. AJAX与JSON的结合****6. 使用AJAX框架和库****7. 实战&#xff1a;创建一个动态表单****8. AJAX中的事…

PyQt5 + selenium,自动票务工具,演唱会门票,学习使用

PyQt5 selenium&#xff1b;在damai工具的基础上加入了UI界面&#xff0c;并将应用做了打包工作&#xff0c;主要是方便不会/不想折腾环境的用户使用&#xff0c;抢票的核心代码来自由于原作者不再维护&#xff0c;自己修改了部分代码。 安装教程 解压安装包到任意位置&…

基于Cobbler实现多版本系统批量部署

一、实验题目 基于Cobbler实现多版本系统批量部署 二、实验目的 通过Cobbler&#xff0c;实验旨在实现无需人工干预即可自动安装多个版本的操作系统。这可以大大提高机房设备或服务器集群的部署效率&#xff0c;减少人力成本和操作错误。 三、实验环境 centos7.9并安装Cob…

科研指标精准管理,构建智能可视化的科研生态系统

随着大数据、人工智能技术的发展&#xff0c;许多学科的现代化发展需求增强&#xff0c;科研领域产生的数据量急剧增加&#xff0c;传统的数据处理方式已经无法满足科研工作的需求。如何有效管理、分析和展示这些数据&#xff0c;成为科研工作的关键。 而可视化技术可以将复杂…

如何选择财税RPA解决方案

随着大数据、物联网、人工智能以及RPA等新兴技术的迅猛发展&#xff0c;每个企业都面临着巨大的行业和技术挑战。财务作为企业运营管理的核心&#xff0c;其数字化转型成为众多企业提升管理效能和实现高质量发展的先行路径。随着RPA技术应用在财务领域的不断深入&#xff0c;越…

WordPress主题追格企业官网主题免费开源版V1.1.6

追格企业官网主题免费开源版由追格开发的一款开源wordpress主题&#xff0c;专为企业建站和追格企业官网小程序&#xff08;开源版&#xff09;PC配套而设计&#xff0c;功能集新闻动态、留言反馈、产品与服务、公司简介、联系我们等模块。

Kube-OVN 混合网络场景最佳实践

在近期的技术分享中&#xff0c;灵雀云技术专家刘梦馨与现场网络专家深入探讨了Kube-OVN在混合网络场景下的最佳实践。本次分享详细介绍了Overlay和Underlay网络的特点及其在实际应用中的混用场景&#xff0c;并展示了Kube-OVN项目如何通过自身的解决方案应对混合网络的挑战。以…

web服务器dns服务器配置服务

1.搭建一个nfs服务器&#xff0c;客户端可以从该服务器的/share目录上传并下载文件 server服务器&#xff1a; 创建 /share目录&#xff0c;并且编辑/etc/exports文件 更改目录权限为755&#xff1a; 755权限码的含义是&#xff1a; 文件所有者&#xff08;第一位数字7&…

永劫无间手游攻略:快速升级攻略大全!云手机加速辅助教程!

在永劫无间这款竞技游戏中&#xff0c;快速提升等级和通行证是每个玩家追求的目标。通过合理的模式选择、任务完成以及使用高效的辅助工具&#xff0c;玩家可以更快速地达到这一目标。以下是详细的升级策略和辅助工具介绍。 1. 天选之人模式&#xff1a; 天选之人模式是永劫无间…

算法导论 总结索引 | 第五部分 第二十章:van Emde Boas树

1、一些支持优先队列操作的 数据结构,如第6章的二叉堆、第13章的红黑树 和 第19章的斐波那契堆。在这几种数据结构中, 不论是最好情况 还是 摊还情况, 至少有一项重要操作 只需要 O(n lgn) 时间 由于这些数据结构 都是基于关键字比较 决定的&#xff0c;因此, 8.1节中的下界 Ω…

【React】详解样式控制:从基础到进阶应用的全面指南

文章目录 一、内联样式1. 什么是内联样式&#xff1f;2. 内联样式的定义3. 基本示例4. 动态内联样式 二、CSS模块1. 什么是CSS模块&#xff1f;2. CSS模块的定义3. 基本示例4. 动态应用样式 三、CSS-in-JS1. 什么是CSS-in-JS&#xff1f;2. styled-components的定义3. 基本示例…