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

阳光下的白沙2024-12-25 23:55:17

漫漫编程之路,安装和部署环境是开始也是最重要的一步,遥想多年前刚开始学习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 里面的内容 很少,下面红框中的内容需要自己添加,这涉及到后面的文件配置。

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

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官网 下载

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

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

5.1 无验证启动服务

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

# cd 进入 mongdb 数据库位置
mongod --config -f mongodb.conf 

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

 mongosh --host localhost --port 1234

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

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

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

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

管理员账户用来创建普通账户并给普通账户赋权(主要是数据库的读写权限)。

5.3 开启无验证登录

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

mongod --shutdown -f mongodb.conf 

5.4 验证登录

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

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

六、关于权限

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

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

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