21

如何在 cassandra 数据库中创建第一个用户?

我试过:

CREATE USER username WITH PASSWORD "";

它说:

Bad Request: Only superusers are allowed to perform CREATE USER queries

但在此尝试之前我从未创建过用户,那么如何在 cassandra 数据库中创建第一个用户?

这似乎有点奇怪,因为它就像鸡和蛋的问题,但人们使用 Cassandra,所以我确信在某个地方一定有解决方案。

4

4 回答 4

33

启用身份验证和授权后,您可以像这样以默认 Cassandra 管理员用户身份登录(到本地 Cassandra 实例):

./cqlsh localhost -u cassandra -p cassandra

如果您在 Windows Server 上运行 Cassandra,我相信您需要使用 Python 调用它

python cqlsh localhost -u cassandra -p cassandra

进入后,您的首要任务应该是创建另一个超级用户帐户。

CREATE USER dba WITH PASSWORD 'bacon' SUPERUSER;

接下来,将当前 Cassandra 超级用户的密码设置为其他密码是一个非常好的主意……最好是长且难以理解的密码。对于您的新超级用户,您应该不再需要默认的 Cassandra 帐户。

ALTER USER cassandra WITH PASSWORD 'dfsso67347mething54747long67a7ndincom4574prehensi562ble';

有关更多信息,请查看此 DataStax 文章:DataStax Enterprise 和 Apache Cassandra 中的内部身份验证和授权安全性快速浏览

于 2014-03-06T14:41:11.943 回答
7

改变

authenticator: AllowAllAuthenticator 

authenticator: PasswordAuthenticator 

cassandra.yaml配置文件中并重新启动 Cassandra。

这将在重新启动时为您创建一个超级用户 cassandra。确保您安装了 Phthon27、thrift-0.91、Cassandra(datastax 社区版 2.0.9)等。现在,当您登录 cassandra 时,它会让您以超级用户身份输入。您现在可以创建新的超级用户并更改现有超级用户的密码。

python cqlsh localhost -u cassandra -p cassandra 
Connected to Test Cluster at localhost:9160. 
[cqlsh 4.1.1 | Cassandra 2.0.9 | CQL spec 3.1.1 | Thrift protocol 19.39.0]

使用帮助寻求帮助。

cqlsh> create user abc with password 'xyz' superuser; 
cqlsh> alter user cassandra with password 'gaurav'; 
cqlsh> exit
于 2014-09-10T20:26:44.447 回答
3

要开始使用身份验证,默认的超级用户用户名/密码对是cassandra/cassandra. 这应该可以解决鸡和蛋的问题。

资料来源: http ://www.datastax.com/docs/datastax_enterprise3.0/security/native_authentication

于 2014-03-06T03:36:33.053 回答
3

回复:一旦您启用了身份验证和授权(从 3 月 6 日 14:41 由 BryceAtNetwork23 发表评论)

首先,是否需要更改授权才能设置身份验证?我猜不是。

其次,如果您有数据中心风格的复制设置,那么设置授权并不是一件容易的事。我使用以下步骤设置授权:

  • 在 conf/cassandra.yaml 中,将所有节点的验证器从 AllowAllAuthenticator 更改为 PasswordAuthenticator
  • 重启所有节点
  • 如上所述更改了默认的“cassandra”密码并添加了其他超级用户
  • 通过运行将 system_auth 密钥空间更改为冗余(根据 cassandra.yaml 文件中的说明):“ALTER KEYSPACE system_auth WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'MY_DATACENTER_NAME':N }”
  • 我将 N 设置为我的数据中心中的节点数(即完全冗余)
  • 在每个节点上串行运行 bin/nodetool 修复

对于知道自己在做什么的人来说,这听起来合理吗?

于 2014-07-21T18:09:19.903 回答