欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

聊聊MongoDB?帶訪問控制的副本集部署問題

 更新時(shí)間:2022年02月19日 09:07:53   作者:Uncle鍋  
這篇文章主要介紹了MongoDB?帶訪問控制的副本集部署,本文給大家分享簡(jiǎn)單的步驟幫助大家完成,對(duì)MongoDB副本集部署問題感興趣的朋友一起看看吧

  當(dāng)你需要用到一個(gè)MongoDB 副本集集群,用于開發(fā)測(cè)試時(shí), 可以通過下面的步驟簡(jiǎn)單完成。

版本及環(huán)境 MongoDB4.4 Centos6.5

一、下載 MongoDB Server 及 MongoDB Shell

   MongoDB Server 提供數(shù)據(jù)庫服務(wù)。 Mongo Shell 可以理解為命令行的客戶端程序。

   下載地址:https://www.mongodb.com/try/download/community

   此處選擇對(duì)應(yīng)的,版本, 平臺(tái),Package類型(server /shell)

    4.4.12 MongoDB Server:https://repo.mongodb.org/yum/redhat/6/mongodb-org/4.4/x86_64/RPMS/mongodb-org-server-4.4.12-1.el6.x86_64.rpm

MongoDB Shell:https://repo.mongodb.org/yum/redhat/6/mongodb-org/4.4/x86_64/RPMS/mongodb-org-shell-4.4.12-1.el6.x86_64.rpm

    RMP 安裝

rpm -ivh mongodb-org-server-4.4.12-1.el6.x86_64.rpm

rpm -ivh mongodb-org-shell-4.4.12-1.el6.x86_64.rpm

二、副本集初始化

副本集(replica set)是一組維護(hù)相同數(shù)據(jù)的mongod進(jìn)程, 提供了高可用性。部分節(jié)點(diǎn)故障了,還可以自動(dòng)選取主節(jié)點(diǎn),繼續(xù)提供服務(wù)。

由于副本集的鏈接方式和單點(diǎn)有些區(qū)別,所以測(cè)試環(huán)境也按照副本集方式部署。

    

   MongoDB 手冊(cè)中關(guān)于副本集的部分在:https://docs.mongodb.com/v4.4/replication/

    1. 首先創(chuàng)建下數(shù)據(jù)庫數(shù)據(jù)存儲(chǔ)目錄,用于存儲(chǔ)數(shù)據(jù)。 環(huán)境是單機(jī),三個(gè)節(jié)點(diǎn)的目錄,都是在一臺(tái)機(jī)器創(chuàng)建的,偽分布式。

mkdir -p /srv/mongodb/rs0-0  /srv/mongodb/rs0-1 /srv/mongodb/rs0-2 

    2. 依次啟動(dòng)三個(gè)mongod實(shí)例

mongod --replSet rs0 --fork --logpath  /srv/mongodb/0 --logappend --port 27017 --bind_ip 0.0.0.0,:: --dbpath /srv/mongodb/rs0-0  --oplogSize 128
mongod --replSet rs0 --fork  --logpath  /srv/mongodb/1 --logappend --port 27018 --bind_ip 0.0.0.0,:: --dbpath /srv/mongodb/rs0-1  --oplogSize 128
mongod --replSet rs0 --fork  --logpath  /srv/mongodb/2 --logappend --port 27019 --bind_ip 0.0.0.0,:: --dbpath /srv/mongodb/rs0-2  --oplogSize 128

    啟動(dòng)后, ps -axu |grep mongo 看一下 3個(gè)進(jìn)程 mongod 是不是都o(jì)k。

    3.使用mongo shell 連接其中一個(gè)節(jié)點(diǎn)。進(jìn)行副本集初始化。

mongo --port 27017

    進(jìn)入shell后, 執(zhí)行如下命令。注意替換“10.13.50.40” 為實(shí)際IP

rsconf = {
  _id: "rs0",
  members: [
    {
     _id: 0,
     host: "10.13.50.40:27017"
    },
    {
     _id: 1,
     host: "10.13.50.40:27018"
    },
    {
     _id: 2,
     host: "10.13.50.40:27019"
    }
   ]
}
rs.initiate( rsconf )

    初始化完成后,可以通過

rs.conf()

    查看副本集配置。

    到這里3個(gè)節(jié)點(diǎn)的副本集已經(jīng)配置好了。可以連接進(jìn)行讀寫操作了。

但目前連接是沒有訪問控制的, 下面來增加訪問控制。

三、增加訪問控制

    在副本集中啟用訪問控制,需要進(jìn)行兩項(xiàng)配置。

    1. 副本集節(jié)點(diǎn)成員間的安全認(rèn)證,支持keyfiles 或者 x.509 證書 認(rèn)證。

2.副本集服務(wù)與數(shù)據(jù)庫連接客戶端間的安全認(rèn)證, 用戶名,密碼。權(quán)限基于用戶所屬角色。

    副本集節(jié)點(diǎn)間的內(nèi)部認(rèn)證, 這里使用keyfiles。 通俗說就是所有節(jié)點(diǎn)共享相同的keyfile 作為密碼。keyfile正確, 才能夠加入副本集,實(shí)現(xiàn)了副本集節(jié)點(diǎn)間的身份驗(yàn)證?!?/p>

    創(chuàng)建一個(gè)keyfile, 復(fù)制三份,供3個(gè)節(jié)點(diǎn)使用。下面按官方手冊(cè), 使用openssl 生成隨機(jī)密碼,修改權(quán)限為400. 復(fù)制到3個(gè)目錄備用。

openssl rand -base64 756 > key
chmod  400 key
mkdir -p  /srv/mongodb/k0 /srv/mongodb/k1   /srv/mongodb/k2
cp key /srv/mongodb/k0/
cp key /srv/mongodb/k1/
cp key /srv/mongodb/k2/

下面創(chuàng)建用戶,指定角色。 如前述,使用 mongo shell 連接數(shù)據(jù)庫。創(chuàng)建用戶需要在主節(jié)點(diǎn)進(jìn)行。如果連接的節(jié)點(diǎn)不是當(dāng)前主節(jié)點(diǎn)??梢杂?rs.status(); 查看主節(jié)點(diǎn)ip端口后連接。進(jìn)入mongo shell后, 輸入如下命令。

admin = db.getSiblingDB("admin")
admin.createUser(
  {
    user: "admin",
    pwd: "admin!@#$", 
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

    創(chuàng)建一個(gè)用戶名未 admin 角色為 userAdminAnyDatabase 的用戶, 密碼為 admin!@#$。 關(guān)于內(nèi)建角色的更多信息可以在這里了解。

  https://docs.mongodb.com/v4.4/reference/built-in-roles/

    準(zhǔn)備就緒后。 需要重啟mongo server服務(wù), 啟用訪問控制機(jī)制。 下面關(guān)閉所有節(jié)點(diǎn)。

mongo --port 27017 --eval 'db.adminCommand("shutdown")'
mongo --port 27018 --eval 'db.adminCommand("shutdown")'
mongo --port 27019 --eval 'db.adminCommand("shutdown")'

    重新啟動(dòng)mongod,啟用訪問控制 --auth --keyFile

mongod --replSet rs0 --fork --auth  --keyFile  /srv/mongodb/k0/key --logpath  /srv/mongodb/0 --logappend --port 27017 --bind_ip 0.0.0.0,:: --dbpath /srv/mongodb/rs0-0  --oplogSize 128
mongod --replSet rs0 --fork --auth --keyFile  /srv/mongodb/k1/key  --logpath  /srv/mongodb/1 --logappend --port 27018 --bind_ip 0.0.0.0,:: --dbpath /srv/mongodb/rs0-1  --oplogSize 128
mongod --replSet rs0 --fork --auth  --keyFile  /srv/mongodb/k2/key  --logpath  /srv/mongodb/2 --logappend --port 27019 --bind_ip 0.0.0.0,:: --dbpath /srv/mongodb/rs0-2  --oplogSize 128

  此時(shí),已經(jīng)啟用了訪問控制, 無權(quán)限用戶無法對(duì)數(shù)據(jù)庫進(jìn)行讀寫,無法新增用戶。下面使用 帶認(rèn)證的方式登錄。 --username 及 --password

mongo admin --username admin --password 'admin!@#$'  --host rs0/10.13.50.40:27017,10.13.50.40:27018,10.13.50.40:27019

    admin的角色userAdminAnyDatabase 具有用戶管理權(quán)限,但無數(shù)據(jù)庫讀寫權(quán)限。 登陸后在 mongo shell中創(chuàng)建一個(gè)數(shù)據(jù)庫庫讀寫用戶,讀寫特定數(shù)據(jù)庫。test 用戶具有對(duì)數(shù)據(jù)庫 mytest 的讀寫權(quán)限, 屬于內(nèi)置的 readWrite 角色。

db.createUser( {user: "test",pwd: "test!@#$",roles: [ { role: "readWrite", db: "mytest" } ]})

    然后mongo shell 使用 test 登錄 驗(yàn)證。

mongo test --username test --password 'test!@#$'  --host rs0/10.13.50.40:27017,10.13.50.40:27018,10.13.50.40:27019

  test登錄后,在mongo shell 中測(cè)試讀寫

use mytest
db.col.insert({name:'測(cè)試',age:1})
db.col.find()

   查詢結(jié)果

{ "_id" : ObjectId("61f3da65e72c3f10edef9a78"), "name" : "測(cè)試", "age" : 1 }

至此。一個(gè)三個(gè)節(jié)點(diǎn)的, 帶有訪問控制的副本集,就搞定收工。

到此這篇關(guān)于MongoDB 帶訪問控制的副本集部署的文章就介紹到這了,更多相關(guān)MongoDB副本集部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MongoDB分片在部署與維護(hù)管理中常見的事項(xiàng)總結(jié)大全

    MongoDB分片在部署與維護(hù)管理中常見的事項(xiàng)總結(jié)大全

    分片(sharding)是指將數(shù)據(jù)拆分,將其分散存放在不同的機(jī)器上的過程。下面這篇文章主要給大家總結(jié)介紹了關(guān)于MongoDB分片在部署與維護(hù)管理中常見事項(xiàng)的相關(guān)資料,文中通過圖文以及示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-09-09
  • Ubuntu環(huán)境下mongodb安裝配置詳細(xì)步驟

    Ubuntu環(huán)境下mongodb安裝配置詳細(xì)步驟

    大家好,本篇文章主要講的是Ubuntu環(huán)境下mongodb安裝配置詳細(xì)步驟,感興趣的同學(xué)快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-11-11
  • Windows系統(tǒng)安裝運(yùn)行Mongodb服務(wù)

    Windows系統(tǒng)安裝運(yùn)行Mongodb服務(wù)

    今天小編就為大家分享一篇關(guān)于Windows系統(tǒng)安裝運(yùn)行Mongodb服務(wù),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • MongoDB詭異問題之sh.stopBalancer卡住的解決方法

    MongoDB詭異問題之sh.stopBalancer卡住的解決方法

    這篇文章主要給大家介紹了關(guān)于MongoDB詭異問題之sh.stopBalancer卡住解決的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • 解決MongoDB?位置查詢報(bào)錯(cuò)planner?returned?error:?unable?to?find?index?for?$geoNear?query的問題

    解決MongoDB?位置查詢報(bào)錯(cuò)planner?returned?error:?unable?to?find

    這篇文章主要介紹了MongoDB位置查詢報(bào)錯(cuò)planner?returned?error:?unable?to?find?index?for?$geoNear?query的解決方案,需要的朋友可以參考下
    2023-08-08
  • MongoDB中MapReduce的使用方法詳解

    MongoDB中MapReduce的使用方法詳解

    MapReduce應(yīng)該算是MongoDB操作中比較復(fù)雜的了,下面這篇文章主要給大家介紹了關(guān)于MongoDB中MapReduce使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起看看吧。
    2017-12-12
  • mongo數(shù)據(jù)集合屬性中存在點(diǎn)號(hào)(.)的解決方法

    mongo數(shù)據(jù)集合屬性中存在點(diǎn)號(hào)(.)的解決方法

    這篇文章主要給大家介紹了關(guān)于mongo數(shù)據(jù)集合屬性中存在點(diǎn)號(hào)(.)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • MongoDB入門教程之C#驅(qū)動(dòng)操作實(shí)例

    MongoDB入門教程之C#驅(qū)動(dòng)操作實(shí)例

    這篇文章主要介紹了MongoDB入門教程之C#驅(qū)動(dòng)操作實(shí)例,即C#中操作MongoDB數(shù)據(jù)的方法和代碼示例,需要的朋友可以參考下
    2014-08-08
  • MongoDB在Windows系統(tǒng)和Linux系統(tǒng)中實(shí)現(xiàn)自動(dòng)定時(shí)備份的操作步驟

    MongoDB在Windows系統(tǒng)和Linux系統(tǒng)中實(shí)現(xiàn)自動(dòng)定時(shí)備份的操作步驟

    要在Windows系統(tǒng)中實(shí)現(xiàn)自動(dòng)定時(shí)備份MongoDB數(shù)據(jù)庫,可以使用Windows任務(wù)計(jì)劃程序和MongoDB自帶的mongodump工具,這篇文章主要介紹了MongoDB在Windows系統(tǒng)和Linux系統(tǒng)中實(shí)現(xiàn)自動(dòng)定時(shí)備份的操作步驟,需要的朋友可以參考下
    2023-12-12
  • MongoDB常用數(shù)據(jù)類型分享

    MongoDB常用數(shù)據(jù)類型分享

    這篇文章主要介紹了MongoDB常用數(shù)據(jù)類型,???JSON是一種簡(jiǎn)單的數(shù)據(jù)表示方式,它易于理解、易于解析、易于記憶,?BSON是一種類JSON的二進(jìn)制形式的存儲(chǔ)格,更多類型需要的小伙伴可以參考下文詳細(xì)介紹
    2022-04-04

最新評(píng)論