红帽企业或CentOS的Linux上安装MongoDB的社区版:

https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/

一、安装

  1、配置yum源,在yum源目录下创建一个文件 mongodb-org-4.0.repo

  1. vi /etc/yum.repos.d/mongodb-org-4.0.repo

  2、编辑文件:把下面内容复制进去

  1. [mongodb-org-4.0]
  2. name=MongoDB Repository
  3. baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
  4. gpgcheck=0
  5. enabled=1
  6. gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

  这个内容在官网上复制的时候别在开着翻译的情况下复制,你会爆炸的

  官网gpgcheck=1,表示对从这个yum源下载的rpm包进行校验,配合gpgkey(校验密匙获取地址)使用

  不过……貌似这个校验不能用,我试过1的时候报错了……

  3、安装

  1. yum install -y mongodb-org

  4、启动

  1. service mongod start

  5、登录

    mongodb默认登录无认证,直接进

  1. mongo

二、导入导出数据(mongodb更新很快,高版本和低版本的命令有很多改动的地方,还请读者看准自己用的版本到官网上找到最正确的命令)

  官网文档:https://docs.mongodb.com/manual/reference/program/mongoimport/#options

  1、下载可视化工具,使用工具进行导入导出

  http://www.mongoing.com/archives/3651

  导入导出命令都是在登录mongo之前进行的操作,从系统命令行运行,而不是在登录mongo后的shell里面。

  2、查看导入的参数信息:

  1. mongoimport --help

  3、命令简单导入:

  1. mongoimport --db test --collection role --file role.json

  4、查看导出的参数信息:

  1. mongoexport --help

  5、简单导出

  1. mongoexport --db test --collection role --out role.json

  导出的参数和导入是基本相同的,mongodb4.0版本和以前的版本相当于是换了一种认证机制。

  个人建议:不要在导入之前给mongodb开启身份认证,默认无用户名密码可登录是最方便的。弄好一切之后再根据实际情况看看要不要开户认证机制。

  

三、mongo中GridFS对象的导入导出

  使用GridFS来存储大型文件是一个很好的选择,但是这个库和上面的库的导入导出不一样。因为文件是以二进制的形式存储的,应该使用二进制文件的形式进行导入导出。上面的库使用的是json或csv的形式。

  存储文件的这个库有且只有两个指定的文档:userfiles.files,userfiles.chunks

  1、导入

  1. mongorestore --db test-db --collection userfiles.files /路径/userfiles.files.bson
  2.  
  3. mongorestore --db test-db --collection userfiles.chunks /路径/userfiles.files.bson

  2、导出

  1. mongodump --db test-db --collection userfiles.files --out ./userfiles
  2.  
  3. mongodump --db test-db --collection userfiles.chunks --out ./userfiles

  这种导入导出的方法适用于所有的库,不局限于GridFS

四、安全认证

  认证机制最后再开,可以避免许多问题

  1、创建用户

  1. // 至少需要添加一个用户,且一定要添加一个root用户,否则认证开启失败,因为开启后你都没用户登录,那不是很尴尬
  2. > use admin
  3. switched to db admin
  4. > db.createUser({user:"root",pwd:"root_pwd",roles:[{role:"root",db:"admin"}]});
  5. Successfully added user: {
  6. "user" : "root",
  7. "roles" : [
  8. {
  9. "role" : "root",
  10. "db" : "admin"
  11. }
  12. ]
  13. }
  14. > use userfiles
  15. switched to db userfiles
  16. > db.createUser({user:"user_name",pwd:"user_pwd",roles:[{role:"dbOwner",db:"userfiles"}]});
  17. Successfully added user: {
  18. "user" : "user_name",
  19. "roles" : [
  20. {
  21. "role" : "dbOwner",
  22. "db" : "userfiles"
  23. }
  24. ]
  25. }
  26. > exit

  2、开启安全认证

    编辑文件:/etc/mongod.conf ,把 security: 前面的#号去掉,在下面保留两个缩进加上一行 authorization: enabled ,enabled 和:之间要有一个空格,我也不知道为什么

    重启mongo服务

  1. vi /etc/mongod.conf
  2. # mongod.conf
  3.  
  4. # for documentation of all options, see:
  5. # http://docs.mongodb.org/manual/reference/configuration-options/
  6.  
  7. # where to write logging data.
  8. systemLog:
  9. destination: file
  10. logAppend: true
  11. path: /var/log/mongodb/mongod.log
  12.  
  13. # Where and how to store data.
  14. storage:
  15. dbPath: /var/lib/mongo
  16. journal:
  17. enabled: true
  18. # engine:
  19. # mmapv1:
  20. # wiredTiger:
  21.  
  22. # how the process runs
  23. processManagement:
  24. fork: true # fork and run in background
  25. pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
  26. timeZoneInfo: /usr/share/zoneinfo
  27.  
  28. # network interfaces
  29. net:
  30. port: 27017
  31. bindIp: 127.0.0.1 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
  32.  
  33. 33 # 原来长这样:
  34. 34 # security:
  35. 35 # 改成这样
  36. 36 security:
  37. 37 authorization: enabled
  38.  
  39. #setParameter:
  40. # authenticationMechanisms: SCRAM-SHA-1
  41.  
  42. #auth: true
  43.  
  44. #operationProfiling:
  45.  
  46. #replication:
  47.  
  48. #sharding:
  49.  
  50. ## Enterprise-Only Options
  51.  
  52. #auditLog:
  53.  
  54. #snmp:
  55. ~
  56. ~
  57. ~
  58. ~
  59. "/etc/mongod.conf" 51L, 935C written
  60.  
  61. service mongod restart
  62. Starting mongod: [ OK ]

  3、重新登录,测试安全认证

  1. # mongo
  2. MongoDB shell version v4.0.2
  3. connecting to: mongodb://127.0.0.1:27017
  4. MongoDB server version: 4.0.2
  5. // 这个时候你虽然进来了,但你还没认证,你是没有任何权限的
  6. > show dbs
  7. 2018-09-14T16:15:21.985+0800 E QUERY [js] Error: listDatabases failed:{
  8. "ok" : 0,
  9. "errmsg" : "command listDatabases requires authentication",
  10. "code" : 13,
  11. "codeName" : "Unauthorized"
  12. } :
  13. _getErrorWithCode@src/mongo/shell/utils.js:25:13
  14. Mongo.prototype.getDBs@src/mongo/shell/mongo.js:67:1
  15. shellHelper.show@src/mongo/shell/utils.js:876:19
  16. shellHelper@src/mongo/shell/utils.js:766:15
  17. @(shellhelp2):1:1
  18.  
  19. > use admin
  20. switched to db admin
  21. > db.auth("root","root_pwd")
  22. 1
  23. > show dbs
  24. admin 0.000GB
  25. config 0.000GB
  26. local 0.000GB

  4、安全认证内置角色列表:(复制的官网:https://docs.mongodb.com/manual/core/security-built-in-roles/

数据库用户角色

每个数据库都包含以下角色:

角色 简短的介绍
read

提供对所有读取数据的能力 -系统集合和下列系统集合:system.indexessystem.js,和 system.namespaces收藏。

有关角色授予的特定权限,请参阅read

readWrite

提供read角色的所有权限以及修改所有系统集合和system.js集合的数据的能力。

有关角色授予的特定权限,请参阅 readWrite

数据库管理角色

每个数据库都包含以下数据库管理角色:

角色 简短的介绍
dbAdmin

提供执行管理任务(如与架构相关的任务,索引和收集统计信息)的功能。此角色不授予用户和角色管理权限。

有关角色授予的特定权限,请参阅 dbAdmin

dbOwner 数据库所有者可以对数据库执行任何管理操作。这个角色组合由授予的权限readWrite, dbAdminuserAdmin角色。
userAdmin

提供在当前数据库上创建和修改角色和用户的功能。由于该userAdmin角色允许用户向任何用户(包括他们自己)授予任何权限,因此该角色还间接地提供 对数据库的超级用户访问权限,或者,如果作用于admin 数据库,则提供对群集的访问权限。

有关角色授予的特定权限,请参阅 userAdmin

群集管理角色

admin数据库包括以下角色,用于管理整个系统而不仅仅是单个数据库。这些角色包括但不限于副本集和分片集群管理功能。

角色 简短的介绍
clusterAdmin 提供最佳的集群管理访问。这个角色组合由授予的权限clusterManagerclusterMonitorhostManager角色。此外,角色提供了dropDatabase操作。
clusterManager

提供群集上的管理和监视操作。具有此角色的用户可以分别访问 分片和复制中使用的configlocal数据库。

有关角色授予的特定权限,请参阅 clusterManager

clusterMonitor

提供对监视工具的只读访问权限,例如MongoDB Cloud Manager 和Ops Manager监视代理程序。

有关角色授予的特定权限,请参阅 clusterMonitor

hostManager

提供监视和管理服务器的功能。

有关角色授予的特定权限,请参阅 hostManager

备份和恢复角色

admin数据库包括以下用于备份和还原数据的角色:

角色 简短的介绍
backup

提供备份数据所需的最小权限。此角色提供了足够的权限来使用MongoDB Cloud Manager备份代理, Ops Manager备份代理或用于备份 mongodump整个mongod实例。

有关角色授予的特定权限,请参阅 backup

restore

版本3.6中已更改:提供convertToCapped非系统集合。

提供从不包含system.profile 集合数据的备份还原数据所需的权限。在mongorestore没有--oplogReplay选项的情况下恢复数据时,此角色就足够 了。

有关角色授予的特定权限,请参阅 restore

全数据库角色

版本3.4中已更改。

以下角色可在上admin数据库,并提供适用于所有数据库,除了特权local和 config

角色 简短的介绍
readAnyDatabase

提供与readlocal和之外的所有数据库相同的只读权限config。该角色还在listDatabases整个群集上提供 操作。

有关角色授予的特定权限,请参阅 readAnyDatabase

在版本3.4中更改:在3.4之前,readAnyDatabase包括local和 config数据库。要为数据库提供read权限,请在 local数据库中使用admin数据库中的 read角色创建用户local。另见 clusterManagerclusterMonitor角色访问configlocal数据库。

readWriteAnyDatabase

提供与readWritelocal和之外的所有数据库相同的只读权限config。该角色还在listDatabases整个群集上提供操作。

有关角色授予的特定权限,请参阅 readWriteAnyDatabase

在版本3.4中更改:在3.4之前,readWriteAnyDatabase包括local 和config数据库。要为数据库提供readWrite权限,请在local数据库中使用admin数据库中的readWrite角色创建用户local。另见clusterManagerclusterMonitor 角色访问configlocal数据库。

userAdminAnyDatabase

提供与userAdminlocal和 之外的所有数据库相同的用户管理操作访问权限config

由于该userAdminAnyDatabase角色允许用户向任何用户(包括他们自己)授予任何权限,因此该角色还间接提供超级用户访问权限。

有关角色授予的特定权限,请参阅 userAdminAnyDatabase

在版本3.4中更改:在3.4之前,userAdminAnyDatabase包括 localconfig数据库。

dbAdminAnyDatabase

提供与dbAdminlocal和之外的所有数据库相同的只读权限config。该角色还在listDatabases整个群集上提供操作。

有关角色授予的特定权限,请参阅 dbAdminAnyDatabase

在版本3.4中更改:在3.4之前,dbAdminAnyDatabase包括local 和config数据库。要为数据库提供dbAdmin权限,请在local数据库中使用admin数据库中的dbAdmin角色创建用户local。另见 clusterManagerclusterMonitor角色访问configlocal数据库。

超级用户角色

以下角色为所有资源提供完全权限:

角色 简短的介绍
root

提供对业务和所有的资源 readWriteAnyDatabase, dbAdminAnyDatabaseuserAdminAnyDatabase, clusterAdminrestore,和 结合backup

有关角色授予的特定权限,请参阅 root

内部角色

角色 简短的介绍
__system

提供对数据库中的任何对象执行任何操作的权限。

除特殊情况外,请勿将此角色分配给表示应用程序或人员管理员的用户对象。

有关更多信息,请参阅__system

  

五、mongodb4.0.2兼容须知

   1、官网文档:https://docs.mongodb.com/manual/release-notes/4.0-compatibility/

    删除支持MONGODB-CR认证方式,新增SCRAM-SHA-256认证方式……

    如果之前开发用的是低版本的mongo的就要注意了,很有可能要重写代码

    我最后的解决方法是不开安全认证/捂脸,先上线,后更新的时候再改代码加认证

    2、检查一下自己的mongodb-java-driver包是不是3.8.0版本

    http://mongodb.github.io/mongo-java-driver/

    3、检查一下自己的spring整合mongodb包 spring-data-mongodb是不是与之匹配的版本(具体支持到哪个版本我也不清楚,看一下它的更新说明)

    https://docs.spring.io/spring-data/mongodb/docs/2.0.10.RELEASE/reference/html/#new-features.2-0-0

    

新手小白Linux(Centos6.5)部署java web项目(mongodb4.0.2安装及相关操作)的更多相关文章

  1. 新手小白Linux(Centos6.5)部署java web项目(mysql5.7安装及相关操作)

    一.安装 参考:https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html # 检测系统中是否安装了mysql y ...

  2. Linux CentOS下部署Java Web项目

    本文讲解如何在Linux CentOS下部署Java Web项目的步骤. 一.环境准备: (1)Linux CentOS (2)apache-tomcat-9.0.10 (3)XShell 二.启动t ...

  3. 新手小白Linux(Centos6.5)部署java web项目(总)

    一.准备 1.linux  centos版本的相关命令操作,千万别找ubuntu的,好多命令都不一样,新手小白我傻傻不知道硬是浪费了一天的时间……(百度百科linux版本了解一下) 2.远程登录: P ...

  4. 在linux下用tomcat部署java web项目的过程与注意事项

    在linux下用tomcat部署java web项目的过程与注意事项 一.安装JDK 到http://www.oracle.com/technetwork/java/javase/downloads/ ...

  5. 在linux下用tomcat部署java web项目的过程与注意事项(转)

    在linux下用tomcat部署java web项目的过程与注意事项一.安装JDK到http://www.oracle.com/technetwork/java/javase/downloads/in ...

  6. 阿里云部署Java web项目初体验(转)/linux 上配置jdk和安装tomcat

    摘要:本文主要讲了如何在阿里云上安装JDK.Tomcat以及其配置过程.最后以一个实例来演示在阿里云上部署Java web项目. 一.准备工作 购买了阿里云的云解析,和云服务器ecs. 2.下载put ...

  7. CentOS安装tomcat并且部署Java Web项目具有一定的参考价值

    本篇文章主要介绍了CentOS安装tomcat并且部署Java Web项目,具有一定的参考价值,有需要的可以了解一下.(http://m.8682222.com) 1.准备工作 b.因为tomcat的 ...

  8. 阿里云部署Java web项目初体验(转)

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了如何在阿里云上安装JDK.Tomcat以及其配置过程.最后以一个实例来演示在 ...

  9. 部署Java Web项目报错(一)

    今天,我在部署Java Web项目时,出现错误,并且在eclipse新建一个servers,却出现多个项目. 具体错误截图如下: 然后,我又将项目部署到JBoss服务器中,却还是运行不成功 22:12 ...

随机推荐

  1. codeforces804D Expected diameter of a tree

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  2. hdu 1796 How many integers can you find 容斥定理

    How many integers can you find Time Limit: 12000/5000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  3. mysql 开启远程访问

    # vi /etc/mysql/my.cnf修改 bind-address = 127.0.0.1  为  bind-address = 0.0.0.0 修改完成后重启mysql服务 # sudo / ...

  4. js 二进制转换为16进制数

    <!DOCTYPE html> <html> <head> <title>远程监控</title> </head> <bo ...

  5. django不返回QuerySets的API

    以下的方法不会返回QuerySets,但是作用非常强大,尤其是粗体显示的方法,需要背下来. 方法名 解释 get() 获取单个对象 create() 创建对象,无需save() get_or_crea ...

  6. Linux环境下 RabbitMQ 的下载与安装

    0 环境 CentOS7 RabbitMQ 3.6.5 erlang 18.3 socat rabbitmq是使用erlang语言编写的,所以需要先安装erlang,其次rabbitmq安装依赖于so ...

  7. 介绍 Jersey 依赖

    Jersey 使用 Apache Maven 进行构造和安装.非快照(Non-snapshot)Jersey 发行版本是不会部署到 中心 Maven 仓库(Central Maven Reposito ...

  8. python-day27--hashlib模块-摘要算法

    1.用途: # 文件校验 # 文件是否被改变# 登录密码 #不能解密,但可以“撞库” #加盐 hashlib.md5('nezha'.encode('utf-8')) 2. import hashli ...

  9. seekg()/seekp()与tellg()/tellp()的用法详解

    本文转载于:http://blog.csdn.net/mafuli007/article/details/7314917 (在tcp的文件发送部分有应用) 对输入流操作:seekg()与tellg() ...

  10. HDU-3507 Print Article (斜率优化)

    题目大意:将n个数分成若干个区间,每个区间的代价为区间和的平方加上一个常数m,求最小代价. 题目分析:定义状态dp(i)表示前 i 个数已经分好的最小代价,则状态转移方程为 dp(i)=min(dp( ...