【发布时间】:2015-11-10 03:15:34
【问题描述】:
我目前正在为 Cassandra 使用以下配置:
authenticator: PasswordAuthenticator
authorizer: org.apache.cassandra.auth.CassandraAuthorizer
我的问题是:如何禁用角色管理以使用正常的 CQL system.permissions
禁用整个角色的原因是因为我无法在角色管理处于活动状态时使用创建新用户:
user@cqlsh> create user testuser with password '123';
InvalidRequest: code=2200 [Invalid query] message="org.apache.cassandra.auth.CassandraRoleManager doesn't support PASSWORD"
【问题讨论】:
-
您使用的是哪个身份验证器?从文档中,iAuthenticator 不支持使用密码,但 PasswordAuthenticator 应该(无论使用 RoleManager)“替代 IAuthenticator 实现可以与 CassandraRoleManager 结合使用,但在 CREATE/ALTER ROLE 语句中将不支持 WITH PASSWORD = 'password'。 "
-
目前我在配置中使用 PasswordAuthenticator 和 CassandraAuthorizer。在一台服务器上,有关创建用户的一切工作正常。有问题的服务器使用额外的角色表,例如 system_auth.roles。虽然我的另一台服务器没有(完全相同的 yaml 配置文件)并且基本功能没有问题,例如使用密码创建用户。
-
对不起,错过了一定是错过了问题中有关您的身份验证器的部分。查看 JIRA 添加角色,issues.apache.org/jira/browse/CASSANDRA-7653 -- 看起来 CREATE USER 是 CREATE ROLE 命令的别名。您可以尝试使用命令“CREATE ROLE testuser WITH PASSWORD '123' NOSUPERUSER LOGIN”。看看是否会出现同样的错误。
-
感谢您的回复。我试过:user@cqlsh> CREATE ROLE testuser WITH PASSWORD = '123' AND SUPERUSER = true; InvalidRequest: code=2200 [无效查询] message="org.apache.cassandra.auth.CassandraRoleManager 不支持密码"
-
它几乎给人一种锁定的感觉。恐怕无法创建用户,并且如果不创建新的超级用户,超级管理员无法删除自己的角色。我什至手动删除了磁盘上的所有角色表,但无济于事。