博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
新手小白Linux(Centos6.5)部署java web项目(mongodb4.0.2安装及相关操作)
阅读量:5069 次
发布时间:2019-06-12

本文共 6697 字,大约阅读时间需要 22 分钟。

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

 

 一、安装 

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

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

 

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

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

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

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

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

 

  3、安装

yum install -y mongodb-org

   4、启动

service mongod start

   5、登录

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

mongo

 

 

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

  官网文档:

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

  

 

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

 

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

mongoimport --help

  3、命令简单导入:

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

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

mongoexport --help

  5、简单导出

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

 

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

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

  

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

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

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

  1、导入

mongorestore --db test-db --collection userfiles.files  /路径/userfiles.files.bsonmongorestore --db test-db --collection userfiles.chunks  /路径/userfiles.files.bson

 

  2、导出

mongodump --db test-db  --collection userfiles.files --out ./userfilesmongodump --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 userfiles15 switched to db userfiles16 > 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: file10   logAppend: true11   path: /var/log/mongodb/mongod.log12 13 # Where and how to store data.14 storage:15   dbPath: /var/lib/mongo16   journal:17     enabled: true18 #  engine:19 #  mmapv1:20 #  wiredTiger:21 22 # how the process runs23 processManagement:24   fork: true  # fork and run in background25   pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile26   timeZoneInfo: /usr/share/zoneinfo27 28 # network interfaces29 net:30   port: 2701731   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 # 原来长这样:34 # security:35 # 改成这样36 security:37   authorization: enabled38 39 #setParameter:40 #  authenticationMechanisms: SCRAM-SHA-141 42 #auth: true43 44 #operationProfiling:45 46 #replication:47 48 #sharding:49 50 ## Enterprise-Only Options51 52 #auditLog:53 54 #snmp:55 ~56 ~57 ~58 ~59 "/etc/mongod.conf" 51L, 935C written60 61 service mongod restart62 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:1314 Mongo.prototype.getDBs@src/mongo/shell/mongo.js:67:115 shellHelper.show@src/mongo/shell/utils.js:876:1916 shellHelper@src/mongo/shell/utils.js:766:1517 @(shellhelp2):1:118 19 > use admin20 switched to db admin21 > db.auth("root","root_pwd")22 123 > show dbs24 admin   0.000GB25 config  0.000GB26 local   0.000GB

 

  4、安全认证内置角色列表:(复制的官网:)

 

数据库用户角色

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

角色 简短的介绍

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

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

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

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

 

 

 

 

 

 

数据库管理角色

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

角色 简短的介绍

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

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

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

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

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

 

 

群集管理角色

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

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

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

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

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

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

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

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

 

 

 

 

 

 

 

 

备份和恢复角色

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

角色 简短的介绍

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

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

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

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

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

 

 

 

 

 

 

全数据库角色

版本3.4中已更改。

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

角色 简短的介绍

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

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

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

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

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

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

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

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

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

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

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

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

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

 

 

超级用户角色

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

角色 简短的介绍

提供对业务和所有的资源 , ,, ,,和 结合

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

 

 

 

 

内部角色

角色 简短的介绍

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

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

有关更多信息,请参阅。

  

 

 

 

 

 

五、mongodb4.0.2兼容须知

   1、官网文档:

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

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

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

 

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

    

 

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

    

    

 

转载于:https://www.cnblogs.com/qq765065332/p/9642814.html

你可能感兴趣的文章
C++ p63作业 1
查看>>
第七课 Zookeeper配置管理,分布式锁案例,运维管理,运维管理系统
查看>>
数的划分(动态规划)
查看>>
.Net EntityFramework学习笔记
查看>>
挣值管理(EVT)
查看>>
20180711-Java Number类
查看>>
考试系统优化——准备工作
查看>>
Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds
查看>>
Decker hello world
查看>>
crontab定时任务(待补充)
查看>>
转载:PostgreSQL学习手册(性能提升技巧)
查看>>
javascript学习笔记1
查看>>
LVM调整磁盘分区大小
查看>>
sql使用row_number()查询标记行号
查看>>
PowerDesigner安装教程(含下载+汉化+破解)
查看>>
hdu5236 Article
查看>>
源码 springmvc 请求加载过程
查看>>
linux-memcache安装及memcached memcache扩展
查看>>
python logging 日志使用
查看>>
Effective Java 74 Implement Serializable judiciously
查看>>