天天看點

rabbitmq——使用者管理

内部邀請碼:C8E245J (不寫邀請碼,沒有現金送)

國内私募機構九鼎控股打造,九鼎投資是在全國股份轉讓系統挂牌的公衆公司,股票代碼為430719,為“中國PE第一股”,市值超1000億元。

---------------------------------------------------------------------------------------------------------------------------------------------

原文位址: http://my.oschina.net/hncscwc/blog/262246

安裝最新版本的rabbitmq(3.3.1),并啟用management plugin後,使用預設的賬号guest登陸管理控制台,卻提示登陸失敗。

翻看官方的release文檔後,得知由于賬号guest具有所有的操作權限,并且又是預設賬号,出于安全因素的考慮,guest使用者隻能通過localhost登陸使用,并建議修改guest使用者的密碼以及建立其他賬号管理使用rabbitmq(該功能是在3.3.0版本引入的)。

雖然可以以比較猥瑣的方式:将ebin目錄下rabbit.app中loopback_users裡的<<"guest">>删除,或者在配置檔案rabbitmq.config中對該項進行配置,

rabbitmq——使用者管理

并重新開機rabbitmq,可通過任意IP使用guest賬号登陸管理控制台,但始終是違背了設計者的初衷,再加上以前對這一塊了解也不多,是以有必要總結一下。

1. 使用者管理

使用者管理包括增加使用者,删除使用者,檢視使用者清單,修改使用者密碼。

相應的指令

(1) 新增一個使用者

rabbitmqctl  add_user  Username  Password

(2) 删除一個使用者

rabbitmqctl  delete_user  Username

(3) 修改使用者的密碼

rabbitmqctl  change_password  Username  Newpassword

(4) 檢視目前使用者清單

rabbitmqctl  list_users

2. 使用者角色

按照個人了解,使用者角色可分為五類,超級管理者, 監控者, 政策制定者, 普通管理者以及其他。

(1) 超級管理者(administrator)

可登陸管理控制台(啟用management plugin的情況下),可檢視所有的資訊,并且可以對使用者,政策(policy)進行操作。

(2) 監控者(monitoring)

可登陸管理控制台(啟用management plugin的情況下),同時可以檢視rabbitmq節點的相關資訊(程序數,記憶體使用情況,磁盤使用情況等)

rabbitmq——使用者管理

(3) 政策制定者(policymaker)

可登陸管理控制台(啟用management plugin的情況下), 同時可以對policy進行管理。但無法檢視節點的相關資訊(上圖紅框辨別的部分)。

rabbitmq——使用者管理

與administrator的對比,administrator能看到這些内容

rabbitmq——使用者管理

(4) 普通管理者(management)

僅可登陸管理控制台(啟用management plugin的情況下),無法看到節點資訊,也無法對政策進行管理。

(5) 其他

無法登陸管理控制台,通常就是普通的生産者和消費者。

了解了這些後,就可以根據需要給不同的使用者設定不同的角色,以便按需管理。

設定使用者角色的指令為:

rabbitmqctl  set_user_tags  User  Tag

User為使用者名, Tag為角色名(對應于上面的administrator,monitoring,policymaker,management,或其他自定義名稱)。

也可以給同一使用者設定多個角色,例如

rabbitmqctl  set_user_tags  hncscwc  monitoring  policymaker

3. 使用者權限

使用者權限指的是使用者對exchange,queue的操作權限,包括配置權限,讀寫權限。配置權限會影響到exchange,queue的聲明和删除。讀寫權限影響到從queue裡取消息,向exchange發送消息以及queue和exchange的綁定(bind)操作。

相關指令為:

(1) 設定使用者權限

rabbitmqctl  set_permissions  -p  VHostPath  User  ConfP  WriteP  ReadP

(2) 檢視(指定hostpath)所有使用者的權限資訊

rabbitmqctl  list_permissions  [-p  VHostPath]

(3) 檢視指定使用者的權限資訊

rabbitmqctl  list_user_permissions  User

(4)  清除使用者的權限資訊

rabbitmqctl  clear_permissions  [-p VHostPath]  User

===============================