Linux安装Mongdb

简介

  • MongoDB 是一个基于分布式 文件存储的NoSQL数据库
  • 由C++语言编写,运行稳定,性能高
  • 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案
  • 查看官方网站

MongoDB特点

  • 模式自由 :可以把不同结构的文档存储在同一个数据库里
  • 面向集合的存储:适合存储 JSON风格文件的形式
  • 完整的索引支持:对任何属性可索引
  • 复制和高可用性:支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目的是提供冗余及自动故障转移
  • 自动分片:支持云级别的伸缩性:自动分片功能支持水平的数据库集群,可动态添加额外的机器
  • 丰富的查询:支持丰富的查询表达方式,查询指令使用JSON形式的标记,可轻易查询文档中的内嵌的对象及数组
  • 快速就地更新:查询优化器会分析查询表达式,并生成一个高效的查询计划
  • 高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)

Packages包说明

MongoDB官方源中包含以下几个依赖包:
mongodb-org: MongoDB元数据包,安装时自动安装下面四个组件包:
1.mongodb-org-server: 包含MongoDB守护进程和相关的配置和初始化脚本。
2.mongodb-org-mongos: 包含mongos的守护进程。
3.mongodb-org-shell: 包含mongo shell。
4.mongodb-org-tools: 包含MongoDB的工具: mongoimport, bsondump, mongodump, mongoexport, mongofiles, mongooplog, mongoperf, mongorestore, mongostat, and mongotop。

安装步骤

1.设置yum源

创建仓库文件

vim /etc/yum.repos.d/mongodb-org-4.0.repo
  • 加入以下内容
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

2.下载安装mongo

yum install -y mongodb-org

验证下载结果

rpm -qa |grep mongodb

 

mongodb-org-shell-4.0.13-1.el7.x86_64
mongodb-org-server-4.0.13-1.el7.x86_64
mongodb-org-mongos-4.0.13-1.el7.x86_64
mongodb-org-4.0.13-1.el7.x86_64
mongodb-org-tools-4.0.13-1.el7.x86_64

3.启动mongod服务

# 查看 mongod 服务的状态
systemctl status mongod
# 开启 mongod 服务
systemctl start mongod
# 设置 mongod 服务开机自启
systemctl enable mongod

# 确认mongod服务已开启成功后,进入 mongoDB 命令行交互模式
mongo --port 27017

查看日志   tmp目录没有权限导致

使用mongodb参数--nounixsocket

mongod --config /etc/mongod.conf --nounixsocket --fork

或者修改tmp目录权限

如果无法修改,可以尝试chattr -i /tmp

 

4.创建用户和设置远程访问

创建管理员

use admin;
db.createUser({user: "admin",pwd: "123456",roles:[{ role:"root", db: "admin"} ]});
  • 创建语句的意思是给admin数据库创建用户名为admin的超级管理员用户,为了方便后面权限认证建议使用root权限

创建数据库用户

use zzw;
  • 没有zzw会自动创建可以理解为创建用户
db.createUser({ user: 'zhangzhiwen', pwd: '123456', roles: [ { role: "dbOwner", db: "zzw" } ] });
  • 没授权之前可以在任意地方创建用户,用户都可以在admin数据库中查找出来
  • 简单列取mongo数据库相关权限
    数据库用户角色:read、readWrite;
    数据库管理角色:dbAdmin、dbOwner、userAdmin;
    集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
    备份恢复角色:backup、restore
    所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
    超级用户角色:root

设置远程访问

  • 编辑mongod.conf注释bindIp,并重启mongodb.(这句配置代表只能本机使用,所以需修改)
    设置为 0.0.0.0
vim /etc/mongod.conf

 

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, 

5.授权模式启动mongo服务

vim /etc/mongod.conf

添加以下内容开启授权模式

security:
  authorization: enabled

重启mongod

systemctl restart mongod;
  • 如果报错Job for mongod.service failed because the control process exited with error code. See "systemctl status mongod.service" and "journalctl -xe" for details.做如下操作
rm -f /tmp/mongodb-27017.sock

重启mongod

systemctl restart mongod;

 

数据库备份、还原创建及用户权限配置

#备份数据库:
mongodump -h 192.168.3.8 -d AICloudSaas -o /home/mongodb-bak/AICloudSaas -u root -p root@sxt --authenticationDatabase admin


#还原数据库:
mongorestore -h 10.9.115.81 -u auth -p p@ssw0rd -d AICloudSaas /home/mongodbBak/AICloudSaas   --authenticationDatabase AICloudSaas 

#复制数据库:
db.copyDatabase(fromdb, todb, fromhost, username, password, mechanism)

db.copyDatabase("adminSXTAuthorityCenterV2_0","SXTAuthorityCenterV2_0bak","127.0.0.1:27017","root","root@sxt","SCRAM-SHA-1")

#当前库的配置 需要使用当前库的用户名
db.copyDatabase("SXTBackFrameWork2_0","ThirdInterface","192.168.3.8","auth","p@ssw0rd") 


#创建普通用户
use DevThirdInterface
	db.createUser({
	    user:"auth",
	    pwd:"p@ssw0rd",
	    roles:[{
	        role:"dbAdmin",
	        db:"DevThirdInterface"
	    },{
	        role:"readWrite",
	        db:"DevThirdInterface"
	    }]
	})
	
db.auth("auth", "p@ssw0rd")
#创建数据库:
db.foo.insert({_id:1,name:"SXTAuthorityCenterV2_0"}) 

#配置复制数据库管理员权限
	use admin
	db.copyDatabase("admin","admin","121.46.23.159:1236","admin","root@sxt","SCRAM-SHA-1")
	db.system.users.remove({user:"admin"})
	db.createUser(  
	  {  
	    user: "admin",  
	    pwd: "root@sxt",  
	    roles: [
	      {role: "root", db: "admin"},
	      {role: "backup", db: "admin"},
	      {role: "restore", db: "admin"}
	      ]  
	  }  
	)
	
	db.auth("admin", "root@sxt")
	
#添加并认证管理员 
use admin
db.createUser({
    user:"root",
    pwd:"p@ssw0rd",
    roles:[{
        role:"root",
        db:"admin"
    }]
})
db.auth("root", "p@ssw0rd")

#读写权限
	use SXTAuthorityCenterV2_0
	db.createUser({
	    user:"auth",
	    pwd:"p@ssw0rd",
	    roles:[{
	        role:"dbAdmin",
	        db:"SXTAuthorityCenterV2_0"
	    },{
	        role:"readWrite",
	        db:"SXTAuthorityCenterV2_0"
	    }]
	})
	
	db.auth("auth", "p@ssw0rd")
	
--------------------------------------------------数据库角色说明:
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
-----------------------------------------------------------------------------------------
	

#删除用户:
db.system.users.remove({user:"用户名"})

#查看用户:
db.system.users.find()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值