問題描述
使用 Couchbase 5.0 及其 Java 客戶端 2.0.3,出現以下錯誤.
Using Couchbase 5.0 and its Java client 2.0.3, I have the following error.
只需按照以下說明打開存儲桶:
Just following these instructions to open a bucket:
https://developer.couchbase.com/documentation/server/current/sdk/java/managing-connections.html
如上所述,使用基本的本地配置,只需兩行代碼:
As explained, with a basic local configuration, it's just a matter of two lines of code:
Cluster cluster = CouchbaseCluster.create();
Bucket bucket = cluster.openBucket("hero");
這應該會打開 localhost 集群(實際上是這樣),然后打開一個名為hero"的存儲桶,它實際上存在于我的 Couchbase 服務器中.
That should open the localhost cluster (it actually does) and afterwards open a bucket called "hero", which actually exists in my Couchbase server.
但是,我不斷收到以下錯誤:
Nevertheless, I keep getting the following error:
2017-11-08 00:40:25.546 ERROR 1077 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.couchbase.client.java.error.InvalidPasswordException: Passwords for bucket "hero" do not match.] with root cause
com.couchbase.client.java.error.InvalidPasswordException: Passwords for bucket "hero" do not match.
at com.couchbase.client.java.CouchbaseAsyncCluster$1.call(CouchbaseAsyncCluster.java:156) ~[java-client-2.0.3.jar:2.0.3]
at com.couchbase.client.java.CouchbaseAsyncCluster$1.call(CouchbaseAsyncCluster.java:146) ~[java-client-2.0.3.jar:2.0.3]
at rx.internal.operators.OperatorOnErrorResumeNextViaFunction$1.onError(OperatorOnErrorResumeNextViaFunction.java:77) ~[rxjava-1.0.4.jar:1.0.4]
at rx.internal.operators.OperatorMap$1.onError(OperatorMap.java:49) ~[rxjava-1.0.4.jar:1.0.4]
at rx.internal.operators.NotificationLite.accept(NotificationLite.java:147) ~[rxjava-1.0.4.jar:1.0.4]
at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.pollQueue(OperatorObserveOn.java:177) ~[rxjava-1.0.4.jar:1.0.4]
at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.access$000(OperatorObserveOn.java:65) ~[rxjava-1.0.4.jar:1.0.4]
at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber$2.call(OperatorObserveOn.java:153) ~[rxjava-1.0.4.jar:1.0.4]
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:47) ~[rxjava-1.0.4.jar:1.0.4]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_151]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_151]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[na:1.8.0_151]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) ~[na:1.8.0_151]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_151]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_151]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_151]
不知何故,它正在詢問存儲桶的密碼.但是Couchbase的bucket級別沒有密碼配置.
Somehow it's asking a password for the bucket. But there is no configuration of password at bucket levels in Couchbase.
有人知道嗎?
推薦答案
在 Couchbase Server 5.0 中,引入了基于角色的訪問控制.您現在必須創建一個名稱與存儲桶名稱匹配的用戶,并在打開存儲桶時使用該用戶的密碼.用戶必須具有對存儲桶具有訪問權限的角色.
In Couchbase Server 5.0, role-based access controls were introduced. You must now create a user with a name that matches the bucket name and use that user's password when opening the bucket. The user must have a role with access rights to the bucket.
Cluster cluster = CouchbaseCluster.create();
Bucket bucket = cluster.openBucket("hero", "password");
有關更多信息,請參閱此 Couchbase 論壇帖子:V5.0 - 新的基于角色的身份驗證 - 存儲桶密碼等
See this Couchbase forum post for more information: V5.0 - NEW Role-Based Authentication - Bucket Passwords, etc
SDK 用戶
- 繼續使用您當前的 SDK 版本訪問存在用戶、具有適當權限且與該存儲桶同名的存儲桶.
- 升級到最新的 SDK 版本以訪問現在可用的更新的身份驗證和用戶管理功能.
這篇關于Couchbase 存儲桶身份驗證錯誤的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!