Linux 系统安装 mongdb8 全详细安装教程

1 阅读8分钟

漫漫编程之路,安装和部署环境是开始也是最重要的一步,遥想多年前刚开始学习Java的时候,一个Java环境的部署就搞了一个多星期,各种问题,简直快被搞疯了。

即使后来安装成功,其实也对其整个过程一知半解。因此每到新电脑需要部署新环境时,痛苦就要重来一遍。

为了自己也为了广大学习编程的童鞋能够走好第一步,特意推出了一系列关于各类编程语言如java/python/nodejs、数据库如mysql/pgsql/mongdb/nodejs 以及各类工具中间件如vscode/navicat/nginx/kafka/docker/等等一些列热门工具的安装教程(主要是针对)!

安装教程最新一期——mongdb8 全教程 讲解,所有在安装过程中遇到的问题都会在本文中找到应对之策。

废话不多说,进入干活阶段,记得点赞收藏!

一、下载

进入mongodb官网安装图示进行下载。

这里下载当前的最新版本也就是8.0.4。(版本更迭会很快,如果安装时候已经迭代了更多版本,并且不想出现异常情况且对数据库新增功能要求不高(毕竟我只想做CRUD,不需要那么多幺蛾子),可以到这里去下载收录的该版本。)

这里有很多坑,mongdb 老版本和新版本 差异巨大(最明显的就是关于mongosh工具的加入),如果在其他地方找到的资料,没有注意版本问题,可能导致自己装的和资料说的不一致的情况。

二、解压安装

在shell面板进行远程下载(当然你下载到本地再上传上去问题不大,就是麻烦)

2.1 下载

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel8-8.0.4.tgz

2.2 解压并改名

将名字改的简单一点

tar -zxvf mongodb-linux-x86_64-rhel8-8.0.4.tgz
mv mongodb-linux-x86_64-rhel88-8.0.4 mongodb8.4

2.3 创建环境

2.3.1 cd进入 mongodb8.4 之后会发现mongdb8 里面的内容 很少,下面红框中的内容需要自己添加,这涉及到后面的文件配置。

mkdir db
mkdir log

2.3.2 在 里面 新建一个mongdb.conf文件,并复制下面内容:

touch mongdb.conf
# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  #mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod
  dbPath: /usr/local/src/mongodb8.4/db
  #journal:
    #启用或禁用持久性日志以确保数据文件保持有效和可恢复。
    #enabled: true

# where to write logging data.
systemLog:
  #MongoDB发送所有日志输出的目标指定为文件
  destination: file
  #当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾
  logAppend: true
  #mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径
  path: /usr/local/src/mongodb8.4/log/mongod.log

# network interfaces
net:
  port: 1234
  # 远程连接要指定ip,否则无法连接;0.0.0.0代表不限制ip访问
  bindIp: 0.0.0.0

processManagement:
  #启用在后台运行mongos或mongod进程的守护进程模式。
  fork: true

#权限校验登录,即密码登录,刚开始的时候注释掉这条保证能直接进入数据库,这点跟mysql初始化无密码登录一致,同时 如果忘记密码也可以通过注释这行 然后重启 重新无密码登录【无密码登录是很危险的操作,建议至只在安装时期设置】
security:
  authorization: enabled
#sharding:

## Enterprise-Only Options:

#auditLog:

这个配置文件是整个安装过程的核心所在。mongdb 现在已经简略到啥也不管啥也不给你配,全部默认,如果没有配置,你可以无密码进入数据库,数据库会存在默认反正你找不到的地方,并且使用的是默认端口 27017, 我敢保证 不出一晚 你的数据库就被黑客 攻击并且给你发邮件。

所以,这个文件里的内容至关重要,核心部分就是三个内容:【数据库位置】 【日志位置】 【端口】

三、配置环境变量并启动

在启动之前,我们要将配置 环境变量,对就是Java 的那个环境变量(任何带bin的编程语言 都一样,反正配置了之后,就可以无缝执行脚本使用了)

vi /etc/profile

在结尾添加好 mongdb 的 环境变量配置(具体位置根据你自己下载的mongdb位置,这个也很容易忽略,还是要提一下)

export MONGODB_HOME=/usr/local/src/mongodb8.4/
export MONGOSH_HOME=/usr/local/src/mongosh2.3/
export PATH=$PATH:$MONGODB_HOME/bin:$MONGOSH_HOME/bin

刷新下:

source  /etc/profile

输入mongod 当出现如下内容,表示整个安装过程圆满结束:

四、安装 mongosh

顺利搞定安装之后,接下来就需要搞定账户问题。这也是之前提到的,如果没有账户,你的数据库变得毫无意义,因为你的数据会面临黑客疯狂的攻击。

mongdb 最新版(应该是从4开始) 使用了 mongosh 工具来执行 脚本,其实就是进入数据库内部。只有进入数据库内部我们才能创建账户。

如果使用外部工具如navicat,我们也不需要去安装mongosh 不过建议还是装一下。

进入mongosh官网 下载

mogosh下载地址

【由于版本不断在迭代,保持稳定能用最重要,这个版本测试无误,除非老板限制要求规定版本,自己做项目能用就行了】

安装mongosh的流程 比较简单 只需要配置好环境变量即可,上面已经配好了。执行 mongosh -version出现以下内容表示

五、开启/关闭mongdb服务 创建账户

5.1 无验证启动服务

创建账户之前,必须要“无验证”(注释掉配置文件中的 security 行) 启动 mongdb 服务

# cd 进入 mongdb 数据库位置 如果配置好环境变量 mongod 命令可直接使用
mongod --config mongodb.conf 

看到下图,表示monodb 已经成功启动:

微信图片_20250619020107.png

5.2 进入数据库并创建管理员账户

 mongosh --host localhost --port 1234

成功进入之后,并可以执行 mongdb语句命令了,关于mongdb的 账户权限系统比较细,可以查看结尾部分,咱们首先创建一个管理员账户:

1、在admin[系统库]中创建一个管理员

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

2、再在系统库中创建一个普通用户,并给他赋一个数据库(my_admin)读写权限:

db.createUser({user:"my_admin",pwd:"123",roles:[{role:"readWrite",db:"doc_admin"}]})

管理员账户用来创建普通账户并给普通账户赋权(主要是数据库的读写权限)。
【注意要将密码设置的复杂点】

5.3 开启无验证登录

先通过以下命令关闭服务,并取消无验证的配置【上面的security配置】,然后重新启动:

mongod --shutdown mongdb.conf 

5.4 验证登录

重启之后,如果要登录管理员账户进行操作,如创建新账户等,可以使用以下命令:

mongosh "mongodb://admin:123@localhost:1234/admin?authSource=admin"

六、关于权限

这里做一个反面示例,查看下面的例子,上面创建一个my_admin的账户 并给其一个 叫做 doc_admin的数据库,当我们创建或打开doc_admin1也就是非doc_admin的数据库时 ,会出现权限不足的错误:

什么是验证数据库?

微信图片_20250619155440.png

关于mongdb 的账户权限如下,在其他教程里会详细介绍,并介绍关于mongdb的 crud 的 详细过程,这里简略。

数据库用户角色:read、readWrite
数据库管理角色:dbAdmin、dbOwner、userAdmin
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
备份恢复角色:backup、restore
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root
内部角色:__system

如果不想那么麻烦,比如自己测试使用,那么直接创建一个万能超级权限完事:

use admin;
db.createUser({
    user: "wg_admin",
    pwd: "12345",
    roles: [{
        role: "root",
        db: "admin"
    }]
})

七、最后

如果这篇文章对您有所帮助,或者有所启发的话,帮忙关注一下我的同名公众号:考拉在编程,您的支持是我坚持写作最大的动力。

求一键三连:点赞、转发、在看。

关注公众号:【苏三说技术】,在公众号中回复:进大厂,可以免费获取我最近整理的10万字的面试宝典,好多小伙伴靠这个宝典拿到了多家大厂的offer。

想获取更多干货的小伙伴们,可以看一下这个宝藏网站:https://daimane.com,同时也希望找到一些志同道合的童鞋们,一起搞事情!

原文地址