一|macOS环境安装mongoDB

1.mongoDB的简单介绍:

mongoDB是什么?

mongoDB是一个基于分布式文件存储的数据库

  • 分布式:就是可以多台计算机上存储数据
  • 数据库:是按照数据结构来组织,存储和管理数据的应用程序,作用就是管理数据,对数据进行增删改差。相比纯文件管理数据,速度更快,扩展更多,安全更好。

mongoDB的核心概念:

  • 数据库(database):数据库是一个数据仓库,数据库服务下面可以有很多数据库,一个数据库库中可以存放很多集合
  • 集合(collection):集合类似于JS中的数组,在集合中可以存放很多文档
  • 文档(document):类似于JS中的对象,文档是数据库中最小单位

2.mongoDB下载:

下载:

<https://www.mongodb.com/zh-cn>

进入官网,在产品导航中找到免费社区版Community Server,下载6.0之前的版本(6.0后mongodb/bin中不包含mongo),更多版本可以通过current releases & packages中查找。

安装:

下载解压后改名为mongoDB,然后移动到放在/usr/local下面(mac 的/usr/local 对用户时隐藏的,可以在访达中使用 command+shift+G 搜索进入)

3.环境变量配置:

首先要确定你的终端类型,在终端输入:

js 复制代码
open .bash_profile

根据返回的不同的类型输入不同的指令:

js 复制代码
// bash: 
export PATH=${PATH}:/usr/local/mongodb/bin 

// zsh: 
export PATH=/usr/local/mongodb/bin:$PATH

保存mongodb的环境变量:

js 复制代码
source .bash_profile

查看版本

js 复制代码
mongod -version

安装成功,返回下图:

4.mongodb配置:

进入 mongodb 目录

js 复制代码
cd /usr/local/mongodb

创建 data 和 log 文件夹(名字可以是其他的,不强制)

js 复制代码
mkdir data log

由于读写权限的问题,需要给这两个文件夹赋予读写权限, 用户名(AlexTT·Mac)要替换成你自己的

js 复制代码
sudo chown AlexTT·Mac /usr/local/mongodb/data 
sudo chown AlexTT·Mac /usr/local/mongodb/log

5.mongodb 启动:

进入安装目录

js 复制代码
cd /usr/local/mongodb

启动指令

js 复制代码
mongod --fork -dbpath data --logpath log/mongo.log --logappend
  • mongod: 这是MongoDB数据库服务器的可执行文件。它用于启动MongoDB服务器
  • --fork: 这是一个选项,它告诉MongoDB在后台运行作为守护进程。使用此选项会使MongoDB在启动后不会阻塞终端,并且可以在后台运行。
  • -dbpath data: 这是一个选项,用于指定MongoDB数据文件的存储路径。在这个例子中,数据文件存储在名为"data"的文件夹中。MongoDB使用该文件夹来存储其数据文件,包括数据库的实际数据。
  • --logpath log/mongo.log: 这是一个选项,用于指定MongoDB服务器日志文件的存储路径。在这个例子中,日志文件存储在名为"log"的文件夹中,并且文件名为"mongo.log"。MongoDB会将各种日志信息记录到此文件中,包括服务器的启动、运行时信息以及错误信息。
  • --logappend: 这是一个选项,它告诉MongoDB在写入日志文件时追加日志而不是覆盖已有的日志。这对于保留历史日志记录非常有用,以便后续分析和故障排除

成功提醒

child process started successfully, parent exiting

新建一个终端(终端2:mongo),输入mongo

js 复制代码
mongo

终端2启动成功提示

浏览器打开http://127.0.0.1:27017/,以下提示表示运行成功:

It looks like you are trying to access MongoDB over HTTP on the native driver port.

6. 如果终端2启动mongo报错 zsh: command not found: mongo

终端输入

js 复制代码
open ~/.zshrc

在打开的内容里面,输入source ~/.bash_profile 并保存

7. mongoDB关闭

现在一共两个终端:

  • 终端1:/usr/local/mongodb
  • 终端2:mongo

终端2输入

js 复制代码
use admin

// 成功提示:switched to db admin

继续输入

js 复制代码
db.shutdownServer({force:true})

// 成功提示:server should be down..

8. 通过配置文件启动mongoDB (以下内容为拓展,可以不看)

在访达中使用 command+shift+G 搜索进入 /usr/local,打开mongodb,创建etc文件夹,并创建 mongodb.conf

js 复制代码
// mongodb.conf
# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
 systemLog:
    destination: file
    logAppend: true
    path: /usr/local/mongodb/log/mongo.log
# Where and how to store data.
 storage:
    dbPath: /usr/local/mongodb/data/
    journal:
        enabled: true
# how the process runs
 processManagement:
    fork: true  # fork and run in background
# network interfaces
 net:
    port: 27017
    bindIp: 127.0.0.1  
 security:
    authorization: enabled

配置文件启动:

js 复制代码
 mongod -f /usr/local/mongodb/etc/mongodb.conf

如果配置文件启动报错:

js 复制代码
uncaught exception: Error: shutdownServer failed: { "ok" : 0, "errmsg" : "not authorized on admin to execute command { shutdown: 1.0, force: true, lsid: { id: UUID(\"0b02cfad-0114-4158-a85b-23731e293a98\") }, $db: \"admin\" }", "code" : 13, "codeName" : "Unauthorized" } : _getErrorWithCode@src/mongo/shell/utils.js:25:13 DB.prototype.shutdownServer@src/mongo/shell/db.js:441:19 @(shell):1:1

终端2输入:

js 复制代码
db.createUser({user:"root",pwd:"123456",roles:[{role:"root",db:"admin"}]})

成功提示:

js 复制代码
Successfully added user: {
"user" : "root",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}

输入以下指令登录,返回1表示成功

js 复制代码
db.auth('root','123456')

赋权:

js 复制代码
db.grantRolesToUser( "root" , [{role: "hostManager", db: "admin"}])

关闭配置文件:

js 复制代码
use admin db.shutdownServer({force:true})
相关推荐
吕彬-前端18 分钟前
使用vite+react+ts+Ant Design开发后台管理项目(五)
前端·javascript·react.js
学前端的小朱21 分钟前
Redux的简介及其在React中的应用
前端·javascript·react.js·redux·store
guai_guai_guai30 分钟前
uniapp
前端·javascript·vue.js·uni-app
bysking1 小时前
【前端-组件】定义行分组的表格表单实现-bysking
前端·react.js
王哲晓2 小时前
第三十章 章节练习商品列表组件封装
前端·javascript·vue.js
fg_4112 小时前
无网络安装ionic和运行
前端·npm
理想不理想v2 小时前
‌Vue 3相比Vue 2的主要改进‌?
前端·javascript·vue.js·面试
酷酷的阿云2 小时前
不用ECharts!从0到1徒手撸一个Vue3柱状图
前端·javascript·vue.js
微信:137971205872 小时前
web端手机录音
前端
全能全知者2 小时前
docker快速安装与配置mongoDB
mongodb·docker·容器