日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MongoDb分片集群认证

發布時間:2023/12/9 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MongoDb分片集群认证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文主要基于已經搭建好的未認證集群,結合上篇Mongodb副本集分片集群模式環境部署(https://www.cnblogs.com/woxingwoxue/p/9875878.html), MongoDb分片集群認證幾個主要流程

1.在分片集群環境中,副本集內成員之間需要用keyFile認證,mongos與配置服務器,副本集之間也要keyFile認證,集群所有mongod和mongos實例使用內容相同的keyFile文件
(1)在其中一臺機器上生成keyfile

openssl rand -base64 753 > keyfile sudo chmod 400 keyfile

(2)將keyfile放置在<path-to-keyfilie>路徑

2.建立管理員賬號,賦所有權限(admin和config數據庫)

use admin db.createUser({user: "admin",pwd: "123456",roles: [ { role: "root", db: "admin" } ]}) #root所有權限 db.auth("admin","123456")use config db.createUser({user: "admin",pwd: "123456",roles: [ { role: "root", db: "admin" } ]}) #root所有權限 db.auth("admin","123456")

3.關閉所有mongod、mongos、configsvr,編輯配置文件,重新啟動每臺服務器每個實例

為每一個mongod、mongos、配置服務器的實例其中的配置文件添加認證屬性或者在啟動實例時添加--authorization、--keyFile選項

[mongo@mongo3 ~]$ vi services/configsvr/mongod.conf #mongod.conf 添加以下配置 security:authorization: enabled #若啟動實例報錯,可刪除該行keyFile: /home/mongo/services/keyfile [mongo@mongo3 ~]$ ./mongod -f services/configsvr/mongod.conf

其他實例如下

[mongo@mongo3 ~]$ vi services/shard1/mongod.conf#mongod.conf 添加以下配置 security:authorization: enabled #若啟動實例報錯,可刪除該行keyFile: /home/mongo/services/keyfile[mongo@mongo3 ~]$ ./mongod -f services/shard1/mongod.conf[mongo@mongo1 ~]$ vi services/shard2/mongod.conf#mongod.conf 添加以下配置 security:authorization: enabled #若啟動實例報錯,可刪除該行keyFile: /home/mongo/services/keyfile[mongo@mongo1 ~]$ ./mongod -f services/shard2/mongod.conf[mongo@mongo1 ~]$ vi services/shard3/mongod.conf#mongod.conf 添加以下配置 security:authorization: enabled #若啟動實例報錯,可刪除該行keyFile: /home/mongo/services/keyfile[mongo@mongo1 ~]$ ./mongod -f services/shard3/mongod.conf[mongo@mongo2 ~]$ vi services/mongos/mongos.conf#mongod.conf 添加以下配置 security:authorization: enabled #若啟動實例報錯,可刪除該行keyFile: /home/mongo/services/keyfile[mongo@mongo2 ~]$ ./mongos -f services/mongos/mongos.conf

4.admin連接mongo集群

[mongo@mongo3 ~]$ ./mongo 172.16.0.192:27017/admin -u admin -p 123456

5.為指定數據庫添加訪問用戶,本文為testShard數據庫

use testShard db.createUser({user:"test",pwd:"test",roles:[{role:"readWrite", db:"testShard"} #讀寫權限]} ) db.auth("test","test")

6.test訪問mongo集群,只有testShard的數據讀寫權限

[mongo@mongo3 ~]$ ./mongo 172.16.0.192:27017/testShard -u test -p test MongoDB shell version v4.0.3 connecting to: mongodb://172.16.0.192:27017/testShard Implicit session: session { "id" : UUID("e0f8bf3f-83d7-432c-ba4c-c063d865380e") } MongoDB server version: 4.0.3

?

用戶和角色方法
詳細參見官方文檔:
https://docs.mongodb.com/manual/reference/method/#role-management

查看角色信息
use admin
db.getRole("rolename",{showPrivileges:true})

刪除角色
use admin
db.dropRole("rolename")

系統內置用戶角色
大部分內置的角色對所有數據庫共用,少部分僅對admin生效

數據庫用戶類

read
非系統集合有查詢權限

readWrite
非系統集合有查詢和修改權限

數據庫管理類

dbAdmin
數據庫管理相關,比如索引管理,schema管理,統計收集等,不包括用戶和角色管理

dbOwner
提供數據庫管理,讀寫權限,用戶和角色管理相關功能

userAdmin
提供數據庫用戶和角色管理相關功能

集群管理類

clusterAdmin
提供最大集群管理權限

clusterManager
提供集群管理和監控權限

clusterMonitor
提供對監控工具只讀權限

hostManager
提供監控和管理severs權限

備份和恢復類

backup
提供數據庫備份權限
restore
提供數據恢復權限

All-Database類

readAnyDatabase
提供讀取所有數據庫的權限除了local和config數據庫之外

readWriteAnyDatabase
和readAnyDatabase一樣,除了增加了寫權限

userAdminAnyDatabase
管理用戶所有數據庫權限,單個數據庫權限和userAdmin角色一樣

dbAdminAnyDatabase
提供所有用戶管理權限,除了local,config


超級用戶類

root
數據庫所有權限

內部角色

__system
提供數據庫所有對象任何操作的權限,不能分配給用戶,非常危險

轉載于:https://www.cnblogs.com/woxingwoxue/p/9888897.html

總結

以上是生活随笔為你收集整理的MongoDb分片集群认证的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。