2017-06-06 173 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

相关问题