zoukankan      html  css  js  c++  java
  • 新手小白Linux(Centos6.5)部署java web项目(mongodb4.0.2安装及相关操作)

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

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

     一、安装 

      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更新很快,高版本和低版本的命令有很多改动的地方,还请读者看准自己用的版本到官网上找到最正确的命令)

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

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

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

      导入导出命令都是在登录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.bson mongorestore --db test-db --collection userfiles.chunks /路径/userfiles.files.bson

      2、导出


    mongodump --db test-db --collection userfiles.files --out ./userfiles 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 # 原来长这样:
    34 # security:
    35 # 改成这样
    36 security:
    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

        

  • 相关阅读:
    UWP Composition API
    UWP VirtualizedVariableSizedGridView 支持可虚拟化可变大小Item的View(二)
    UWP VirtualizedVariableSizedGridView 支持可虚拟化可变大小Item的View(一)
    UWP 图片剪切旋转工具
    整理UWP中网络和设备信息获取的帮助类,需要的拿走。
    UWP 设备分辨率
    UWP webview 键盘bug,回退页面,键盘会弹一下。
    UWP 解决Webview在Pivot里面无法左右滑动的问题
    ngnix https
    nginx www解析失败问题解决
  • 原文地址:https://www.cnblogs.com/qq765065332/p/9642814.html
Copyright © 2011-2022 走看看