新手小白Linux(Centos6.5)部署java web項目(mongodb4.0.2安裝及相關操作)

来源:https://www.cnblogs.com/qq765065332/archive/2018/09/14/9642814.html
-Advertisement-
Play Games

紅帽企業或CentOS的Linux上安裝MongoDB的社區版: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/ 一、安裝 1、配置yum源,在yum源目錄下創建一個文件 mongodb-org-4.0.rep ...


紅帽企業或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

    

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • . 創建.net core web api 1.1 選擇一個empty 模式,裡面只有簡單的2個class 1.2 配置web api 的路由. 1.2.1 打開Startup.cs,首先引用config(Microsoft.Extensions.Configuration),創建一個構造函數,註入 ...
  • 在ASP.Net Core中,如果直接在Middleware中獲取RouteData返回的是空值,這是因為RouterMiddleware還沒執行。但有些情況下需要獲取RouteData,這要怎麼做呢? ...
  • 一、Webservice開發 1、在解決方案右鍵添加新建項目,新建空的web應用程式 2、在新建的項目右鍵添加新建項選擇web服務 3、這裡就是webservice 里的方法,可以添加自己需要的方法(方法前需要添加[WebMethod] 的特性,才可以被調用) 4、發佈iis即可訪問 5、需要身份驗 ...
  • GCC(GNU Compiler Collection,GNU 編譯器套件)是由 GNU 開發的編程語言編譯器,支持C、C++、Objective-C、Fortran、Java、Ada和Go語言等多種預言的前端,以及這些語言的庫(如libstdc++、libgcj等等),它是以 GLP 許可證所發行... ...
  •     對任意一門語言都會有變數,在awk中變數分為 內置變數 和 自定義變數 。 內置變數:就是預先在awk中定義好的,用戶可以直接使用 自定義變數:這種變數為用戶自己定義的變數,需要先定義後再使用。 內置變數 awk主要的內置變數如下所示: | 變數 | 解釋 |預設值| | ...
  • 一. ovs 從源碼編譯安裝: 安裝依賴項: 下載源碼包 生成配置文件 配置 編譯 啟動 測試 二. Ovs的卸載 啟動ovs之後,如果改動ovs源代碼並且想更新ovs服務,進行如下操作: 參考資料 "Open vSwitch on Linux, FreeBSD and NetBSD" 作者: "y ...
  • Windows本地操作系統服務API由一系列以 Nt 或 Zw 為首碼的函數實現的,這些函數以內核模式運行,內核驅動可以直接調用這些函數,而用戶層程式只能通過系統進行調用。通常情況下用戶層應用程式不會直接調用 Nt 和 Zw 系函數,更多的是通過直接調用Win32函數,這些Win32函數內部會調用 ...
  • 發現自己的linux水平楞個瓜皮,找個視屏教程學習一哈。 1 linux系統簡介 1.1 UNIX和Linux發展史 unix發展歷史:1969年,美國貝爾實驗室的肯.湯普森開發出unix系統,1971年丹尼斯·里奇發明C語言,1973年,unix用c重寫 硬體平臺的概念 也就是cpu架構 Powe... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...