2017-06-06 177 views
1

爲了測試目的,我們更新了Couchbase從4.6 Community Edition到5.0.0-2873 Enterprise Edition,並且我們使用java-client的軟件在嘗試打開存儲桶時開始拋出InvalidPasswordException。不能在沒有身份驗證的情況下創建桶

正如我所發現的,每個新創建的桶都有authType ='sasl'和一個隨機生成的saslPassword。 我試圖創建使用CLI水桶代替GUI的:

couchbase-cli bucket-create -c localhost:8091 -u Administrator -p password --bucket=general --bucket-ramsize=1300 --bucket-type=couchbase --bucket-password= 

我得到了以下錯誤:

ERROR: unrecognized arguments: --bucket-password=password 

我也是同樣的結果嘗試了鬥編輯功能。

根據documentation該參數應該是有效的。

我也嘗試使用REST API來更改桶認證(和類似的密碼),但即使這沒有引發任何錯誤,authType和密碼保持不變。

curl -X POST -u Administrator:password -d 'authType=none' http://<host>:8091/pools/default/buckets/general 

再次,根據documentation這應該工作。

如果我查詢sasl密碼的桶信息併爲openBucket函數提供該連接,但是我們確實不希望在我們的系統中使用此功能。

那麼,有沒有其他想法可以在我們的5.0EE Couchbase安裝中刪除桶認證?

回答

3

在Couchbase 5.0中,我們不再支持存儲桶密碼,並在連接到存儲桶時轉而使用基於角色的訪問控制。這意味着在5.0中,連接到存儲桶的標準(預生產)方式是使用您在設置羣集時創建的管理員用戶和密碼。如果您不確定管理員用戶是什麼,那麼您首次通過Couchbase安裝嚮導時創建的用戶,或者它是在運行couchbase-cli cluster-init時在命令行上指定的用戶名和密碼命令。

需要注意的一件事是使用管理員用戶/密碼是標準的預製作工作流程。我建議您在開始生產時爲應用程序創建單獨的用戶,這些用戶只能訪問羣集中需要訪問的羣集資源。您可以通過轉到管理控制檯中的用戶選項卡並創建一個新用戶併爲他們提供應用程序應具有的標準角色「全部存儲區訪問」角色來執行此操作。

您現在可能會對自己說這聽起來不錯,但是當我使用管理員用戶/密碼時,我仍然遇到問題。如果是這種情況,原因是因爲您有Couchbase 5.0,但您的SDK不夠新,無法處理5.0中的新RBAC身份驗證機制。解決方法是在用戶選項卡中創建一個與存儲桶名稱相同的用戶,併爲該用戶提供全部存儲區訪問角色。然後您可以使用此用戶進行身份驗證。

最後要提的一件事是,在從5.0之前的集羣升級到5.0集羣時,Couchbase會自動爲每個存儲桶創建一個用戶。每個用戶將具有與其中一個桶相同的名稱,並且該用戶的密碼將與桶密碼相對應。這主要是爲了確保升級過程中沒有應用程序停機時間。升級集羣后,理想情況下,下一步應該是升級Couchbase客戶端庫以使其開始使用RBAC身份驗證。

+0

這說得很清楚,謝謝! –

+0

如果您配置了多個存儲桶,我想沒有適當的解決方法?我可以想到一個混亂的解決方法,即以桶的名稱命名每個桶創建一個用戶。 : - | – prettyvoid

+0

解決方法是使用與您提到的每個存儲桶相同的名稱創建用戶。不過,我建議您更新到您正在使用的SDK的最新版本,並儘快利用RBAC。另外請注意,如果您從5.0之前升級到5.0,則會自動創建用戶。如果您確實想要使用具有Couchbase 5.0的舊SDK,則只需要此解決方法。 – mikewied

相關問題