ThriftSecurityException(用户:root,code:BAD_CREDENTIALS)

ThriftSecurityException (user:root, code:BAD_CREDENTIALS)

当我尝试从 java 客户端连接到 accumulo 时,它失败了。我正在使用 'root' 用户但已更改密码。我调试了我的代码,它实际上获得了正确的用户名和密码,与我用来登录 shell 的用户名和密码相同。

我在其他一些网站上读到我必须在我的 accumulo-site.xml 文件中设置 'trace.user' 和 'trace.password',所以我这样做并重新启动了 accumulo。不幸的是,它没有改变任何事情。

当我尝试从 java 连接时,这些是堆栈中的重要行:

Caused by: org.apache.accumulo.core.client.AccumuloSecurityException: Error BAD_CREDENTIALS for user root - Username or Password is Invalid
Caused by: ThriftSecurityException(user:root, code:BAD_CREDENTIALS)

从我的 accumulo 控制台,我看到了这个:

08 15:44:06,0544    tserver:michael-GA-890GPA-UD3H  4   
ERROR
ThriftSecurityException(user:root, code:BAD_CREDENTIALS)

当我查看我的 accumulo 日志时,我只看到相同的异常,并且它的堆栈每秒都在打印。

我查看了 accumulo 手册,但没有找到我遗漏的任何内容。 google 搜索和 SO 搜索也没有帮助我。

有人能告诉我我做错了什么吗?

根据您使用的版本,您可能还在 accumulo-site.xml 中定义了 trace.token.property.password,它是 trace.password 的替代品。 >=1.6.0引入了trace.token.property.password属性。如果配置中同时存在 属性 和 trace.password,则 trace.token.property.password 将优先于 trace.password。

查看 $ACCUMULO_LOG_DIR/tracer_$hostname.debug.log 文件,您可能会发现其中有许多异常。

配置跟踪器的 "proper" 方法(读作:您希望如何在生产环境中执行此操作)是将 'trace' table 创建为 'root',创建一个'trace'用户,并赋予'trace'用户对'trace'table的读、写和ALTER_TABLE权限。然后,在 accumulo-site.xml.

中更新 trace.user 和 trace.token.property.password

不确定您是否仍然想要解决方案,对我有帮助的是将 trace.token.property.password 的值更改为正确的密码,即 instance.secret 的值用于 trace.user 'root' 在 accumulo-site.xml 文件中。

或者您可以使用 'root' 用户打开 accumulo shell 并在 shell 中创建一个新用户,然后更新跟踪用户及其当前密码的值.