从零开始:在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 

相关内容

热门资讯

wepoke ai辅助!wep... 自定义wepoke ai辅助系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器...
德州ai人工智能!wepoke... 德州ai人工智能!wepoke软件规律,wepOkE一直是真的有挂(详细透视挂教程)1、金币登录送、...
九分钟了解!福建众娱软件辅助去... 九分钟了解!福建众娱软件辅助去哪里买,轰趴十三水果然是有挂,详细教程(有挂脚本)1)福建众娱软件辅助...
玩家必知教程!潮友潮汕麻将作吗... 玩家必知教程!潮友潮汕麻将作吗(辅助)一直是真的有挂(2020已更新)(哔哩哔哩)进入游戏-大厅左侧...
wepoke有挂!wepoke... 1、wepoke有挂!wepoke辅助透视教程(Wepoke苹果版本)都是真的有挂(详细ai代打的胜...
aapoker有挂!wepok... aapoker有挂!wepoke辅助技巧,wEpOke一直是真的有挂(详细透明挂黑科技教程)(1)a...
2分钟辅助挂!欢乐卡五星怎么提... 2分钟辅助挂!欢乐卡五星怎么提高胜率,wepower德州果然是真的有挂,攻略方法(有挂解说)1)欢乐...
一分钟教会你!友相逢麻将有挂吗... 一分钟教会你!友相逢麻将有挂吗(透明挂)一直真的有挂(2021已更新)(哔哩哔哩)友相逢麻将有挂吗辅...
aapoker有猫腻!aapo... aapoker有猫腻!aapoker透明挂,(aapoker安卓版)一贯是有挂(详细挂教程);wpk...
5分钟发现!八闽十三水好牌,智... 5分钟发现!八闽十三水好牌,智星德州都是是真的有挂,解密教程(有挂神器);1、点击下载安装,八闽十三...