Search code examples
javaaccumulo

ThriftSecurityException (user:root, code:BAD_CREDENTIALS)


When I try to connect to accumulo from a java client, it is failing. I am using the 'root' user but have changed the password. I debugged my code, it is in fact getting the correct user name and password, the same I one I use to log into the shell with.

I read on some other sites that I have to set 'trace.user' and 'trace.password' in my accumulo-site.xml file, so I did that and restarted accumulo. Unfortunately it did not change a thing.

When I try to connect from java, these are the important lines from the stack:

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)

From my accumulo console, I see this:

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

When I look through my accumulo logs I just see the same exception and its stack getting printed every second that goes by.

I went looking through the accumulo manual and couldn't find anything that I'm missing. A google search and SO search also did not help me.

Would somebody please tell me what I'm doing wrong?


Solution

  • Depending on the version you're using, you may also have trace.token.property.password defined in accumulo-site.xml which is the replacement for trace.password. >=1.6.0 introduced the trace.token.property.password property. If both that property and trace.password are present in the configuration, trace.token.property.password will take precedence over trace.password.

    Look at the $ACCUMULO_LOG_DIR/tracer_$hostname.debug.log file, you'll likely have numerous exceptions in there.

    The "proper" way (read as: how you'd want to do it in a production environment) to configure the tracer is to create the 'trace' table as 'root', create a 'trace' user, and give the 'trace' user READ, WRITE and ALTER_TABLE permissions on the 'trace' table. Then, update trace.user and trace.token.property.password in accumulo-site.xml.