根据here中的文档,尝试使用Cassandra 2.2中新的基于角色的访问控制创建可以使用密码登录的新角色(以前称为用户)失败。
具体而言,以下语句提供了后续错误:
CREATE ROLE pam WITH PASSWORD = 'abc123' AND LOGIN = true;
InvalidRequest:code = 2200 [无效查询] message =" org.apache.cassandra.auth.CassandraRoleManager不支持PASSWORD"
上下文。新鲜的Cassandra 2.2安装3节点。表system_auth仅具有以下表:resource_role_permissons_index role_permissions role_members roles - 并且不包含旧版auth表,这是升级时的警告。
答案 0 :(得分:1)
您是否在节点中使用IAuthenticator?切换到使用PasswordAuthenticator来支持使用密码。
以下摘自CassandraRoleManager:https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/auth/CassandraRoleManager.java
页面替代IAuthenticator实现可以结合使用 使用* CassandraRoleManager,但WITH PASSWORD ='密码'将不会 在CREATE / ALTER ROLE语句中得到支持*。
答案 1 :(得分:1)
我怀疑问题是public class PendingIntentHolder {
public static PendingIntent instance = new PendingIntent();
static PendingIntent pendingIntent;
public static void setPending(PendingIntent intent) {
pendingIntent= intent;
}
public static PendingIntent getPending() {
return pendingIntent;
}
}
中缺少role_manager选项
在这种情况下,Cassandra初始化默认角色管理器(cassandra.yaml
)的实例,但它在配置完全处理之前完成。具体来说,它是在设置Authenticator之前完成的,所以它没有使用CassandraRoleManager
的正确选项进行初始化。
幸运的是,有一个简单的解决方法是确保将角色管理器设置添加到PasswordAuthenticator
:
cassandra.yaml
Cassandra bug追踪器的门票是CASSANDRA-10209。这表明该错误已在Cassandra 2.2.2和3.0.0中得到修复。