从零开始:在linux系统安装MongoDB数据完整指南 新手常用命令
创始人
2024-11-18 09:38:56
0次

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://:@node1:27017,node2:27017,node3:27017/?replicaSet=myReplicaSet 

4.2 初始化管理员用户

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

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 

相关内容

热门资讯

今日重大通报!wepoker软... 很多人使用云端 AI 时,都担心wepoker软件辅助程序、内部资料上传带来隐私风险。这款本地运行的...
传递经验!wpk辅助哪里买,德... 本地部署 AI 黑科技工具迎来新版本,不用上传文件到云端就能完成wpk辅助哪里买解析、 AI 处理、...
我来教大家!!wpk私人局辅助... 一款 AI 游戏攻略黑科技工具上线,查攻略效率直接开挂。它整合版本更新、装备搭配、BOSS 打法、牌...
安装教程!wejoker私人辅... AI 黑科技赛道又上新,这款智能处理工具堪称效率开挂,专门面向短视频创作者打造。它打通脚本撰写、AI...
玩家必备教程!wpk辅助插件,... 您好,玩家必备教程!wpk辅助插件,wepoker开挂工具插件(先前存在有透视挂)这款游戏可以开挂的...
一分钟揭秘!德扑之心免费透视,... 一分钟揭秘!德扑之心免费透视,wepoker真的有挂教程(果然是真的有开挂)AI 是一款可以让一直输...
重大通报!德扑圈有透视吗,德普... 您好:德扑圈有透视吗这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特...
一分钟揭秘!德普之星有辅助软件... 德普之星有辅助软件吗AI 游戏攻略黑科技上线本地缓存功能,离线查阅能力开挂。提前下载对应游戏攻略数据...
热点推荐!wepoker辅助真... 『标题:当前标题』主打赛后复盘的 AI 游戏攻略黑科技走红,对局总结能力开挂。上传对局回放或者战绩截...
详细教程!德普之星辅助器怎么用... 本地部署 AI 黑科技工具迎来新版本,不用上传文件到云端就能完成德普之星辅助器怎么用解析、 AI 处...