ITPub博客

首页 > 数据库 > NoSQL > mongodb 的权限系统

mongodb 的权限系统

原创 NoSQL 作者:babyyellow 时间:2022-08-29 12:06:42 0 删除 编辑

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博客 ” ,链接:https://blog.itpub.net/133735/viewspace-2912382/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
oracle MySQL Postgresql 专职数据库dba。 系统架构师。 mysql 官方认知dba 。 15年专职dba 经验。 潜意识沟通实证者 心理咨询师。 禅修布道者, 禅修指导员。 禅定实证者。

注册时间:2010-12-02

  • 博文量
    367
  • 访问量
    1908633