Couchbase无法访问受密码保护的存储分区

时间:2016-06-28 15:03:17

标签: java couchbase

我在一台远程计算机上运行一个couchbase服务器,该计算机上有一个名为" targets-dev"在上面。直到今天,该存储桶没有任何密码,我能够访问和查询该存储桶到我心中的内容。 今天,我使用

在桶上设置了密码
./couchbase-cli bucket-edit -c host.ip:8091 -u Admin -p password --bucket=targeting-dev --bucket-password=p4$$w0rd
从那以后,事情似乎很奇怪。我仍然可以使用" cbq":

运行查询
./cbq -engine="http://targeting-dev:p4$$w0rd@46.137.95.41:8093/"

所有查询都使用密码执行OK,而身份验证在没有密码的情况下执行。

当我尝试在Web浏览器中运行查询时(如果在预密码时间内工作):

http://host.ip:8092/targeting-dev/_design/dev_targeting-dev/_view/user_count

现在弹出认证窗口,我尝试使用" targeting-dev / p4 $$ w0rd"用户名和密码,但不允许我登录。

最后,我有以下Java代码:

public AbstractRepository(final Database config) {
    this.config = config;
    this.cluster = CouchbaseCluster.create(config.getNodes());
    this.bucket = cluster.openBucket(bucket, password);
}

其中bucket =" targeting-dev"和密码=" p4 $$ w0rd"在调试器中确认。

现在抛出以下异常:

Constructor threw exception; nested exception is com.couchbase.client.java.error.InvalidPasswordException: Passwords for bucket "targeting-dev" do not match.
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1469)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
[INFO] [talledLocalContainer]   at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:762)
[INFO] [talledLocalContainer]   at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)

我知道,这是一个很长的问题,有许多访问一个存储桶的变体,但是有人可以请教我在Java应用程序和Web浏览器访问的情况下我在哪里出错吗?

密钥是否是我使用的错误端口号(对于Web浏览器) - 我尝试了几种组合但没有一种工作?

2 个答案:

答案 0 :(得分:0)

我似乎找到了罪魁祸首 - 看起来Couchbase在密码中不喜欢“$”。将密码设置为“p455w0rd”似乎解决了Web浏览器和Java应用程序的问题。现在一切正常。

答案 1 :(得分:0)

在Couchbase Server 5.0中,引入了基于角色的访问控制。您现在必须创建一个名称与存储桶名称匹配的用户,并在打开存储桶时使用该用户的密码。用户必须具有对存储桶具有访问权限的角色。

Cluster cluster = CouchbaseCluster.create(); Bucket bucket = cluster.openBucket(“hero”,“password”);

在上面的示例中,您的存储桶名称是英雄,您应该在安全部分创建一个名为“hero”的用户。创建存储桶以添加密码时,您将看不到任何选项。

Couchbase Bucket authentication error