Authentication 当Cassandra不知道';卡桑德拉';默认用户?
如何在不更改源代码的情况下重置默认Cassandra凭据 我检查过类似的问题,比如。 我有三个节点的Datastax Cassandra 2.0.8集群,我正在尝试实现身份验证。我已经在所有节点中设置了cassandra.yaml并重新启动了它们。问题是我仍然无法登录到cqlsh 我还尝试在cqlsh中重置cassandra用户的密码(我已为此禁用身份验证): 在日志中有关于创建cassandra superuser的信息。我已经检查了keyspace system_auth,它包括凭据、权限和用户。“和凭据”列族确实包含用户cassandra:Authentication 当Cassandra不知道';卡桑德拉';默认用户?,authentication,cassandra,Authentication,Cassandra,如何在不更改源代码的情况下重置默认Cassandra凭据 我检查过类似的问题,比如。 我有三个节点的Datastax Cassandra 2.0.8集群,我正在尝试实现身份验证。我已经在所有节点中设置了cassandra.yaml并重新启动了它们。问题是我仍然无法登录到cqlsh 我还尝试在cqlsh中重置cassandra用户的密码(我已为此禁用身份验证): 在日志中有关于创建cassandra superuser的信息。我已经检查了keyspace system_auth,它包括凭据、权限和
cqlsh> use system_auth;
cqlsh:system_auth> select * from credentials;
username | options | salted_hash
-----------+---------+---------------------------------------------------------- ----
cassandra | null | $2a$10$vbfmLdkQdUz3Rmw.fF7Ygu6GuphqHndpJKTvElqAciUJ4SZ3pw quu
(1 rows)
但是,当我尝试时:
./cqlsh -u cassandra -p cassandra
我得到一个例外,那个用户不存在,但我没有创建一个的权限
cql.cassandra.ttypes.AuthenticationException: AuthenticationException(why="User cassandra doesn't exist - create it with CREATE USER query first")
我不确定,但您上面使用的哈希很有可能随着每个版本的变化而变化,并且可能是特定于特定版本的Cassandra。考虑到这一点,您可以(理论上)在虚拟机中安装相同的版本,然后查询该机器的
系统身份验证凭据
,以获取cassandra用户的salted\u hash
。如果不是因为你上面提到的问题,我决不会想到去尝试
否则,下一个选项将起作用
cd
向下移动到data
目录,然后执行:
$mv system\u auth system\u auth\u 20140814
密码验证器
,cassandra将使用默认的cassandra超级用户重新生成系统_auth
键空间,您可以使用该用户与cqlsh
一起返回
$ ./cqlsh -u cassandra -p cassandra
Connected to MyCluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 2.1.0-rc5-SNAPSHOT | CQL spec 3.2.0 | Native protocol v3]
Use HELP for help.
cqlsh>
注:
- 您必须重新添加所有用户,并重新应用其所有权限
- 除了重命名(
)mv
目录外,您还可以删除它(system\u auth
)rm
- 您必须将适当的复制设置重新应用到
keyspace。默认情况下,system\u auth
的复制系数仅为1system\u auth
$ ./cqlsh -u cassandra -p cassandra
Connected to MyCluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 2.1.0-rc5-SNAPSHOT | CQL spec 3.2.0 | Native protocol v3]
Use HELP for help.
cqlsh>