Centos系统中mongodb的安装详解

2023-11-13

1、mongodb安装

MongoDB的下载网址:Download MongoDB Community Server | MongoDB

将下载的压缩包文件上传到centos系统中:  【可以直接使用rz、scp或者可视化工具上传】

解压缩文件:MongoDB的从官方下载的包是已经编译好的免安装,解压缩即可。

tar -zxvf mongodb-linux-x86_64-rhel70-4.4.17.tgz

移动安装文件夹并重命名

mv mongodb-linux-x86_64-rhel70-4.4.17 /usr/local/
mv mongodb-linux-x86_64-rhel70-4.4.17/ mongodb

在mongodb目录下创建data、logs目录

创建logs/mongodb.log文件

在mongodb 的bin目录下创建mongodb.conf配置文件

# 数据文件存放目录
dbpath = /usr/local/mongodb/data
# 日志文件存放目录
logpath = /usr/local/mongodb/logs/mongodb.log
logappend=true
# 端口
port = 27017
# 以守护程序的方式启用,即在后台运行
fork = false
# 认证模式
auth=true
# 远程连接
bind_ip=0.0.0.0

mongod启动的常用参数详细说明:

参数

说明

取值示例

dbpath

mongodb数据文件存储路径(指定数据库目录)

/usr/local/mongodb/data

logpath

mongod的日志路径(指定日志文件目录)

/usr/local/mongodb/logs/mongodb.log

logappend

日志使用追加代替覆盖

true

fork

以守护程序的方式启用,即在后台运行

true

bind_ip

IP地址

0.0.0.0

port

端口

27107

auth

认证模式

此处是true,需要设置账号和密码(下一步设置)

false

直接启动数据库:

./mongod -f mongodb.conf

使用Ctrl+C停止进程!

使用mongo命令进入数据库,当未添加环境变量时,命令mongo不能直接使用。

将mongodb命令添加到环境变量中:

vim /etc/profile
# 添加mongodb环境变量
export PATH=$PATH:/usr/local/mongodb/bin
# 重新加载配置文件
source /etc/profile
# 检查环境变量
echo $PATH

 使用mongo命令进入数据库:

2、MongoDB守护进程,后台启动

        在上述mongodb.conf配置文件中,fork设置的为false,需要把fork设置为true,让它后台执行,修改后执行如下:

3、MongoDB开启auth验证

        在上述mongodb.conf配置文件中,auth设置的为true,这时就需要对数据库的操作需要权限,如下所示,在普通用户下执行插入时就报错了(root用户下执行也是会报错),这就是因为设置了权限的问题:

        此时需要先把mongo进程给关闭,把配置文件中的auth改为false,然后重新启动。启动后到admin集合下创建超级管理员账户,创建后,再把配置文件中的auth改为true,重新启动mongo进程进可以了。这时候我们就可以使用超级管理员来创建一般用户,分别给予不同权限。

3.1 创建超级用户:

        超级用户必须到admin数据库下创建。

#切换到admin数据库
use admin
#使用db.createUser()函数在admin数据库下创建用户
db.createUser({user:"root",pwd:"88888888",roles:[{role:"userAdminAnyDatabase",db:"admin"},{role:"readWriteAnyDatabase",db:"admin"}]})

创建超级用户成功后,将mongodb.conf文件中的安全认证开启auth=true

重启MongoDB

#切换到admin数据库
use admin
#进行验证,认证通过返回:1
db.auth('root','88888888')

 Built-In Roles(内置角色):

1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超级用户角色:root  
// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
7. 内部角色:__system

具体角色的功能:

  • Read:允许用户读取指定数据库
  • readWrite:允许用户读写指定数据库
  • dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
  • userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
  • clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
  • readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
  • readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
  • userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
  • dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
  • root:只在admin数据库中可用。超级账号,超级权限
     

3.2 创建普通用户:

        创建好超级账号后就可以创建普通用户了。

//切换到admin数据库
use admin
//进行auth认证,认证通过返回:1
db.auth("root","88888888")
//切换或创建数据库,例:test
use test
db.createUser({user:"user",pwd:"123456",roles:[{role:"readWrite",db:"test"}]})

db.createUser({user:"dgw",pwd:"88888888",roles:[{role:"dbAdmin",db:"test_data"},{role:"readWrite",db:"test_data"},{role:"userAdmin",db:"test_data"}]})

3.3  查看和删除用户:

#切换到admin数据库
use admin
#查看所有用户
db.system.users.find()
#删除用户 删除时需要切换到该账户所在的数据库
db.system.users.remove({user:"user"})

注意:超级管理员也可能没有删除的权限,查看其role中是否有删除该用户的权限。

4、Mongodb-database-tools

        MongoDB导入导出和备份的等命令工具从4.4版本开始不再自动跟随数据库一起安装,而是需要自己手动安装。

下载链接:Download MongoDB Command Line Database Tools | MongoDB

mongodb-dababase-tools安装具体操作详见博文:mongodump工具安装及使用详解_IT之一小佬的博客-CSDN博客

参考博文:

https://www.jb51.net/article/234408.htm

Centos7中MongoDB开启auth验证_muwenbo666的博客-CSDN博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Centos系统中mongodb的安装详解 的相关文章

  • 连接到 atlas mongo 数据库

    我正在使用node Js expressjs mongodb 和 Atlas var Db require mongodb Db var Server require mongodb Server 上面的方法对我不起作用 通过使用atlas
  • MongoDB 中的多对多更新无需事务

    我有两个具有多对多关系的集合 我想在两个文档中存储链接的 ObjectId 数组 以便我可以获取文档 A 并快速检索所有链接的文档 B 反之亦然 创建此链接分为两个步骤 将文档 A 的 ObjectId 添加到文档 B 将文档 B 的 Ob
  • 查找集合中的所有对象 Java Mongodb

    下面的代码查找集合中的第一个文档 package database import com mongodb BasicDBObject import com mongodb BulkWriteOperation import com mong
  • 如何在 MongoDB $lookup 中使用变量

    假设我有 3 个收藏 cars bikes vehicles cars 集合为 id car1 carBrand Audi color blue id car2 carBrand BMW color white bikes 集合为 id b
  • 如何在windows上安装mongoDB?

    我正在尝试测试 mongoDB 看看它是否适合我 我下载了 32 位 Windows 版本 但不知道如何继续 我通常使用 WAMP 服务在本地计算机上进行开发 我可以在 Wamp 上运行 mongoDB 吗 但是 使它在 Windows 上
  • 迭代从 MongoDB 获取的字符串数组

    我正在使用蒙戈小猫 https github com OpenKitten MongoKitten从 mongoDB 获取文档的库 我的 mongoDB 中有以下文档 foo A B 我可以查询数据库 但无法循环foo返回文档的数组 例如
  • MongoDB 将所有现有索引迁移到新数据库

    我有一个 MongoDB 开发集群 随着时间的推移 我在其中创建索引 作为开发改进的一部分 在测试 生产 MongoDB 集群上 我也想维护相同的索引 那么我如何获取现有集合的所有索引并在新数据库上创建相同的集合索引 从 mongo she
  • 查询返回的结果多于预期

    请耐心等待 这并不是我真正的问题 只是想让别人理解 作者注 The 可能重复 https stackoverflow com questions 4966203 mongo query question gt lt问题解决方案允许 elem
  • Mongoose 连接两个集合并仅从连接的集合中获取特定字段

    我在加入猫鼬中的两个集合时遇到问题 我有两个集合 即 学生和考试 学生模型 fullname type String required true email type String required true 考试模式 test type
  • 事务 1 已在 MongoDB 中提交

    我正在尝试使用事务来更新多个文档 一种是加载表单文档 await Sheet save session 另一个是库存预订记录数组 await Stock bulkWrite const session await mongoose star
  • MongoDB聚合,按值区间分组,

    MongoDB 文档 id 123213 elevation 2300 area 25 id 343221 elevation 1600 area 35 id 545322 elevation 500 area 12 id 234234 e
  • 带有版本控制的 json 数据存储

    问题定义 有一个Java服务器存储JSON可以映射到 Java 类的数据 Java 类可能会发生变化 目标是能够更新 Java 类并且仍然能够解码JSON旧版本的数据到新版本的 Java 对象 应该有一个良好的版本控制系统 例如 能够向 J
  • 使用 NoSQL 文档存储数据库有哪些实际用例?

    在过去的几天里 我一直在阅读文档并观看特定于 Mongo DB 的截屏视频 我不知道像这样的解决方案何时会比典型的 pg 或 mysql 环境更好 具体来说 我的问题是在什么情况下 有用例就很好 你会选择 nosql 路线 Thanks 许
  • 将json文件插入mongodb

    我是 MongoDB 新手 在 Windows 中安装 MongoDB 后 我尝试使用以下命令插入一个简单的 json 文件 C gt mongodb bin mongoimport db test collection docs lt e
  • MongoDB C# 驱动程序:使用 linq 在列表中使用或包含在列表中进行不区分大小写的比较

    我正在使用 MongoDB C 驱动程序 我想对集合执行 linq where 子句 将属性的小写版本与内存中列表的小写版本进行比较 像这样 items items Where i gt listToCheck Contains i Pro
  • mongodb 聚合随机化(shuffle)结果

    我正在浏览一堆 mongo 文档 但找不到洗牌或随机化结果内容的可能性 有没有 特别是对于聚合框架本身来说 实际上并没有任何本地方法 因为还没有可用的运算符来执行诸如生成随机数之类的操作 因此 无论您可能投射一个字段进行排序的任何匹配 都不
  • Akka 和 ReactiveMongo

    我正在尝试找到在集群工作人员之间共享相同连接池的最佳方法 我有以下结构 Master Actor gt Worker Actors 最多 100 个或更多 gt MongoDB 我想在工作人员和 MongoDB 之间放置reactivemo
  • 如何在同一个项目中连接两个数据库MySQL和MongoDB?是否可以?

    目前我正在使用 Hibernate MySQL 和 Spring 配置对我来说运行良好 但是一旦我配置了另一个配置 mongo config xml 文件并尝试使用 mongodb 运行测试用例 它就显示创建名为 的 bean 时出错从第一
  • 如何将 pymongo.cursor.Cursor 转换为字典?

    我正在使用 pymongo 查询一个区域内的所有项目 实际上是查询地图上一个区域内的所有场馆 我用了db command SON 在搜索球形区域之前 它可以返回一本字典 字典中有一个名为results其中包含场馆 现在我需要在一个正方形区域
  • Mocking/Stubbing Mongoose 模型保存方法

    给定一个简单的 Mongoose 模型 import mongoose Schema from mongoose const PostSchema Schema title type String postDate type Date de

随机推荐