mongodb 的許可權系統

babyyellow發表於2022-08-29

mongodb  開啟許可權認證需要注意的幾個點: 


ReplSet  下面, 叢集的連結,需要   keyfile  看明白了。  是 keyFile   才對 。 




1.   

keyfile 的內容不能包含 等號 "="  


openssl  rand   128   最後一個字元是 “=” 


大於  128  後面就增加 等號了。 


取  90  或者 100  左右或者手工取其中的一部分都行。 



openssl  rand   90   >  keyFile 。 


然後複製到各個節點。  


許可權 0600  .  


2. 

還有一個問題


systemctl  啟動的指令碼里面 有關於   幾句授權的。 ExecStartPre 那幾句確保不要修改  keyFile 的許可權。 


否則啟動錯誤。 


3.  啟動叢集后,   需要授權給管理員的幾個許可權問題。 


db.createUser (

{

        user:'root',

        pwd:"passwd",

        roles:[ {

                role:"userAdminAnyDatabase",db:"admin"

                },

                {role:"readWriteAnyDatabase",db:"admin"

                },

                {role:"userAdmin",db:'admin'

                },

                {role:"dbAdmin",db:'admin'

                },

                {role:"clusterManager",db:'admin'

                }

                ]

}

)


這是管理員許可權 。


如果業務業務使用者。 


到各自的 業務資料裡去授權。 


use  app  


db.createUser {  ...

 role:[ role:"dbadmin" , db:'app' }

 



需要 一個 dbadmin  de 許可權, 否則可能會有點問題。 


4.  Secodary  庫。  連結後,第一句 是 rs.slaveOk()


否則一直爆粗。 別搞忘了。 


  




5.   如果透過阿里雲DTS 複製 mongodb 做業務資料同步, 


已經要調整  DTS 目標端的寫 併發數 , medium 規格的DTS 預設應該是 32個 併發。 


讓後每個併發 ,  批次寫 128個 記錄。  才提交。 這個是很大的併發量。 


如果你的mongodb  資源不太足,  幾分鐘就壓死了。  而且 會持續 幾個很久的  cpu 跑滿, 


rs 的 slave   離線。  無法接入叢集等等一系列的古怪問題。 


切記。 



6.  arbitery  節點,  只參與 叢集投票,仲裁, 並不參與資料複製


      就不需要設定keyfile  跟  安全驗證了。  給他安裝  exporter 監控的時候, 會導致登入錯誤。 無法監控。 

 

          這個是很重要。   


7.   關於 主從切換的問題。  在主從   之間oplog delay  =0  或者接近 0 的情況下。 

 

         因為我們設定了主庫的 priority   =2  secondary  庫 =1  。 


           主動停止主庫,  會迅速接管到  secondary 變為 primary 。 


            再次啟動  主庫的時候,   角色會 在再次換回來。 


            整個ha 的過程還是相當自在的。 



8. 


下面是配置檔案示例:  


# mongod.conf


# for documentation of all options, see:

#   


# where to write logging data.

systemLog:

  destination: file

  logAppend: true

  path: /app/mongodb/logs/mongod.log


# Where and how to store data.

storage:

  dbPath: /app/mongodb/data/db

  directoryPerDB: true

  journal:

    enabled: true

#  engine:

#  wiredTiger:


# how the process runs

processManagement:

  fork: true  # fork and run in background

  pidFilePath: /app/mongodb/data/mongod.pid  # location of pidfile


  timeZoneInfo: /usr/share/zoneinfo


# network interfaces

net:

  port: 3717

  bindIp: 0.0.0.0  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.



security:

  keyFile: /app/mongodb/data/keyfile/keyfile

  authorization: enabled


#operationProfiling:


replication:

  replSetName: "Mmp_wuid"


#sharding:


## Enterprise-Only Options


#auditLog:


#snmp:


setParameter:

  replWriterThreadCount: 16 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133735/viewspace-2912382/,如需轉載,請註明出處,否則將追究法律責任。

相關文章