<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          NoSQL | MongoDB入門實戰(zhàn)教程(3)

          共 3887字,需瀏覽 8分鐘

           ·

          2021-07-14 20:39

          【NoSQL| 總結(jié)/Edison Zhou

          上一篇我們了解了MongoDB的復(fù)制集概念和復(fù)制集的搭建,本篇我們來了解一下如何實現(xiàn)數(shù)據(jù)恢復(fù) 和 提升安全性的一些實踐。

          1Mongo Tools實現(xiàn)數(shù)據(jù)恢復(fù)

          MongoDB 4.4之后,備份與恢復(fù)功能就和主版本分離開了,因此如果我們想要實現(xiàn)備份與恢復(fù)就需要獨立下載Tools包。

          下載地址:https://www.mongodb.com/try/download/database-tools

          這里,我們下載后將tgz包放到master節(jié)點下。

          配置Mongo Tools

          首先,解壓壓縮包并重命名,然后將其移動到指定目錄下:

          tar -zvxf mongodb-database-tools-rhel70-x86_64-100.3.1.tgzmv mongodb-database-tools-rhel70-x86_64-100.3.1 toolsmv tools /usr/local/mongodb

          然后,為tools在master節(jié)點下配置環(huán)境變量:

          Step1. 修改profile文件并刷新

          cat >>/etc/profile<<"EOF">export PATH=$PATH:/usr/local/mongodb/tools/bin>EOF
          source /etc/profile

          Step2. 修改.bashrc文件

          cat >>/root/.bashrc<<"EOF">export PATH="$PATH:/usr/local/mongodb/tools/bin">EOF

          測試數(shù)據(jù)恢復(fù)

          首先,下載測試數(shù)據(jù)備份dump:

          鏈接: https://pan.baidu.com/s/1wII6S_-ipup4nu9NDKlWcw 提取碼: ihjm

          其次,將其拷貝到master節(jié)點(因為我們只在master節(jié)點安裝了tools)并解壓:

          tar -zvxf mongodb-database-tools-rhel70-x86_64-100.3.1.tgz

          最后,在解壓的目錄下(我這里是/usr/local/mongodb/)執(zhí)行mongorestore:

          mongorestore -h mongo-master:27017

          執(zhí)行結(jié)果如下圖所示:

          可以看到,有100000條記錄成功恢復(fù)。

          我們也可以驗證一下:

          可以看到orders表已經(jīng)恢復(fù)到mock數(shù)據(jù)庫中。

          此外,我們還可以使用mongo tools實現(xiàn)數(shù)據(jù)的備份,只需借助 mongodump 命令,示例如下:

          # 排除指定的集合mongodump  --db test --excludeCollection=users --excludeCollection=salaries# 指定ip,端口,用戶名,認(rèn)證,壓縮,輸出目錄mongodump --host mongo-master --port 37017 --username user --password "pass" --gzip --out /opt/backup/mongodump-2020-05-17
          2提升安全性的實踐

          默認(rèn)是無安全性的設(shè)置

          MongoDB默認(rèn)的配置是無安全性的,用戶名密碼都不需要就可以直接連接。在默認(rèn)模式下,一般不要開放外網(wǎng)連接端口,否則你的MongoDB很可能會被攻擊和刪庫。

          更改MongoDB默認(rèn)端口

          MongoDB默認(rèn)的端口是27017,一般線上環(huán)境都建議更改默認(rèn)端口,比如改為20270,只需在mongodb.conf中配置即可。

          net:  bindIp: 0.0.0.0  port: 20270 # port

          MongoDB的用戶認(rèn)證方式

          MongoDB提供了以下的用戶認(rèn)證方式。

          本次我們實踐一下用戶名+密碼的認(rèn)證方式來提高一點安全性。

          MongoDB的授權(quán)基于角色的權(quán)限控制,不同權(quán)限的用戶對數(shù)據(jù)庫的操作不同。這一點,跟傳統(tǒng)的關(guān)系型數(shù)據(jù)庫如MySQL、MSSQL沒有多大差異。

          Mongo集群節(jié)點的認(rèn)證

          首先,我們需要配置一下Mongo集群節(jié)點的認(rèn)證,目前有兩種認(rèn)證方式。

          這里,我們采用第一種,即Keyfile的方式。

          Step1.在master節(jié)點上通過openssl生成Keyfile:

          mkdir /usr/local/mongodb/certscd /usr/local/mongodb/certsopenssl rand -base64 756 > mongo-repl-set.keychmod 400 mongo-repl-set.key

          Step2.將這個Keyfile復(fù)制到兩個slave節(jié)點上,文件目錄的組織可以保持一致。

          Step3.分別修改各個節(jié)點的mongodb.conf,添加security的配置:

          systemLog:  destination: file  path: /usr/local/mongodb/logs/mongodb.log # log path  logAppend: truestorage:  dbPath: /usr/local/mongodb/data # data directorynet:  bindIp: 0.0.0.0  port: 27017 # portsecurity:  #authorization: enabled  keyFile: /usr/local/mongodb/certs/mongo-repl-set.keyreplication:  replSetName: localrsprocessManagement:  fork: true

          然后,重新啟動這個復(fù)制集集群中的三個節(jié)點。

          創(chuàng)建認(rèn)證用戶

          首先,MongoDB規(guī)定,創(chuàng)建的第一個用戶一定要在admin數(shù)據(jù)庫,并且角色是 userAdminAnyDatabase。

          use admindb.createUser({user:"admin",pwd:"yourpassword",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})

          創(chuàng)建完第一個用戶,就可以用這個用戶登錄并創(chuàng)建其他角色的用戶了。

          其次,創(chuàng)建一個集群的admin用戶:

          use admindb.auth("admin","yourpassword")db.createUser({user:"replicasAdmin",pwd:"yourpassword",roles:[{role:"clusterAdmin",db:"admin"}]})

          這時,你就可以用這個replicasAdmin用戶作為你的復(fù)制集的使用賬號了。

          對于生產(chǎn)環(huán)境,你還需要自定義一些角色并生成對應(yīng)用戶來控制訪問權(quán)限,例如下面的授權(quán):

          db.createRole(  {    role: 'sampleRole',    privileges: [{    resource: {      db: 'sampledb', collection: 'sample'    },    actions: ["update"]  }],  roles: [{    role: 'read',    db: 'sampledb'    }]  })db.createUser(  {    user: 'sampleUser',    pwd: 'password',    roles: [{role: 'sampleRole', db: 'admin'}]  }

          最后,你也可以創(chuàng)建一個root用戶,和Linux系統(tǒng)一樣,這是一個超級用戶賬號:

          use admindb.auth("admin","yourpassword")db.createUser({user:"root",pwd:"yourpassword",roles:[{role:"root",db:"admin"}]})

          當(dāng)然,由于這個賬號權(quán)限太大,不建議分給應(yīng)用程序?qū)用妫ū热?NET或Java應(yīng)用)進(jìn)行聯(lián)接使用。

          重啟復(fù)制集集群

          將三個節(jié)點的mongodb.conf中的 security.authorization:true 的注釋去掉,重啟復(fù)制集:

          ......security:  authorization: enabled  keyFile: /usr/local/mongodb/certs/mongo-repl-set.key......
          End總結(jié)

          本文介紹了如何通過Mongo Tools實現(xiàn)數(shù)據(jù)恢復(fù) 和 提高安全性的一些實踐。

          下一篇,我們會學(xué)習(xí)MongoDB的基本操作和查詢。


          參考資料

          唐建法,《MongoDB高手課》(極客時間)

          郭遠(yuǎn)威,《MongoDB實戰(zhàn)指南》(圖書)

          △推薦訂閱學(xué)習(xí)

          歡迎各位讀者加入微信群一起學(xué)習(xí)交流,
          在公眾號后臺回復(fù)“加群”即可~~


          瀏覽 96
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  www.操碰 | 日韩后入在线 | 人人草在线观看 | 91男女操逼的视频 | aaa国产|