嗨,我是 Couchbase 的新手,并使用 Couchbase 6.0 创建了一个 Springboot 应用程序。
当我安装 Couchbase 时,它要求我创建用户名和密码,我设置了用户名 =“admin”和密码 =“密码”,然后我创建了“学生”存储桶。
我已经在 application.properties 文件中完成了所有必要的配置。
spring.couchbase.bootstrap-hosts=127.0.0.1
spring.couchbase.bucket.name=student
spring.couchbase.bucket.password=password
在服务器启动时,我收到以下错误
Caused by: com.couchbase.client.java.error.InvalidPasswordException: null
Couchbase 网络控制台,有一个 安全 标签,
我在那里添加了用户名“admin”(我在 Couchbase 服务器安装期间创建的)并给出了 全管理员 使用权
服务器再次重启时,我遇到了同样的问题
然后我在那里又添加了一个用户“学生”(与我的存储桶名称相同)并给出了 全管理员 使用权
这次我的服务器成功启动,我没有遇到任何异常
所以我有两个问题,
1:我是否需要创建与我的存储桶一样多的用户名
安全选项卡中的 Couchbase 服务器?。
2:假设我只想使用用户名“admin”(我在 Couchbase 服务器安装期间创建的),我将如何实现这一点?
有人可以对这种行为有所了解吗?
最佳答案
在 couchbase 4.5 之前,存储桶有密码,如果您需要访问存储桶,则必须提供存储桶名称及其密码。在 4.5 之后,他们实现了 rbac (基于角色的访问控制)和删除存储桶级密码。
因此,对于升级了 couchbase 但不想更改代码或发布新版本的人,建议采用一种变通方法,为每个存储桶创建一个用户名,其中用户名是存储桶名称,密码对所有人都相同用户,那样spring-data-couchbase
运行时仍然可以成功验证。
现在 rbac 被添加到 couchbase-java-client
& spring-data-couchbase
(考虑到您使用的是最新版本,不确定他们在哪个特定版本中添加了它),因此如果您想使用单个用户名连接到所有存储桶,您将需要一个 class那个extends AbstractCouchbaseConfiguration
进而
@Override
protected String getUsername() {
return "admin";
}
并通过旧的
bucketPassword()
提供密码方法。我不认为你可以通过
application.properties
做到这一点然而因为org.springframework.boot.autoconfigure
依赖项仍未更新以适应最新的 spring-data-couchbase
变化。另请注意,您通过安全选项卡创建的用户名与您通过安装向导创建的用户无关。您通过初始安装创建的用户是主用户,无法删除,您不会在安全选项卡下看到它,并且它具有完整的管理员权限。您仍然可以通过安全选项卡定义一个同名的用户名(我刚刚了解到),但是您将拥有 2 个帐户、相同的用户、不同的通行证(甚至可能是相同的通行证,但我什至不确定它是如何处理的) couchbase,我的意思是,如果我们有 2 个名为“Administrator”的帐户,使用相同的密码,然后在 Web 控制台上登录,会考虑哪个用户?也许有人可以告诉我们。)
关于spring-boot - Couchbase 6.0 + springboot (InvalidPasswordException),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53177777/