如何重置丢失的Cassandra管理员用户密码?

67up9zun  于 2023-08-04  发布在  Cassandra
关注(0)|答案(4)|浏览(238)

我可以完全访问Cassandra安装文件和在cassandra.yaml中配置的PasswordAuthenticator。我必须做什么来重置管理员用户的密码已经丢失,同时保持现有的数据库完好无损?

mzaanser

mzaanser1#

Cassandra 2.1的哈希值已更改:
1.切换到验证器:AllowAllAuthenticator
1.重启cassandra
1.第一个月
1.切换回验证器:密码验证器
1.重启cassandra
1.以cassandra/cassandra身份登录
1.创建用户和更改用户到您的心脏的内容。

ecbunoof

ecbunoof2#

通过以下步骤解决:
1.将cassandra.yaml中的authenticator更改为AllowAllAuthenticator并重新启动Cassandra

  1. cqlsh
  2. update system_auth.credentials set salted_hash='$2a$10$vbfmLdkQdUz3Rmw.fF7Ygu6GuphqHndpJKTvElqAciUJ4SZ3pwquu' where username='cassandra';
    1.出口cqlsh
    1.将authenticator更改回PasswordAuthenticator并重新启动Cassandra
    现在您可以使用
cqlsh -u cassandra -p cassandra

字符串
把密码改成别的

t30tvxxf

t30tvxxf3#

关于Cassandra 2.0

ALTER USER cassandra WITH PASSWORD 'password';

字符串
如果您想添加用户。

// CREATE USER uname WITH PASSWORD 'password'; // add new user
// GRANT all ON ALL KEYSPACES to uname;    // grant permissions to new user


使用LIST USERS;验证现有用户

编辑

哦,天哪,这会很有趣的!所以,我找到了一个黑客的方法,但它需要改变源代码。
首先是一个高层次的概述:
1.编辑source,以便可以对system_auth.credentials列族进行更改
1.将验证器更改为AllowAllAuthenticator
1.开始C*
1.使用cqlsh登录,无需密码
1.更新cassandra用户的哈希密码
1.撤消源更改并更改回PasswordAuthenticator。

第一步-编辑源代码

打开C* 源代码,转到org.apache.cassandra.service.ClientState包;找到validateLogin()ensureNotAnonymous()函数,并注解掉所有包含的coude,这样你就得到了:

public void validateLogin() throws UnauthorizedException
{
    // if (user == null)
    //    throw new UnauthorizedException("You have not logged in");
}

public void ensureNotAnonymous() throws UnauthorizedException
{
    validateLogin();
    // if (user.isAnonymous())
    //    throw new UnauthorizedException("You have to be logged in and not anonymous to perform this request");
}

步骤2-在cassandra.yaml中更改为AllowAllAuthenticator步骤3和4-简单!第五步-从cqlsh执行insert语句:

insert into system_auth.credentials (username, options, salted_hash) 
VALUES ('cassandra', null, '$2a$10$vbfmLdkQdUz3Rmw.fF7Ygu6GuphqHndpJKTvElqAciUJ4SZ3pwquu');


注意 * 假设已经创建了名为“cassandra”的用户,则第5步将正常工作。如果您创建了另一个用户,只需切换您正在插入的用户名(此过程重置密码,不会添加新用户)。

第6步通过取消注解validateLogin()ensureNotAnonymous()修复源代码,并切换回cassandra.yaml中的PasswordAuthenticator,您现在应该可以通过./cqlsh -u cassandra -p cassandra访问cqlsh

o4tp2gmn

o4tp2gmn4#

更新Cassandra 4:
1.按照其他答案中的描述更改cassandra.yaml:
注解掉以下行

authenticator: PasswordAuthenticator
authorizer: CassandraAuthorizer

字符串
并取消注解

#authenticator: AllowAllAuthenticator
#authorizer: AllowAllAuthorizer


1.使用cqlsh登录。
1.表名和列已更改。查询现在变为
第一个月

相关问题