如何使用自制构建在Cassandra上设置超级用户帐户



我已经用自制软件安装了Cassandra,并正在尝试创建一个超级用户管理员帐户。 当我键入sudo cqlsh -u cassandra -p cassandra时,出现此错误:

Python Cassandra driver not installed, or not on PYTHONPATH.
You might try "pip install cassandra-driver".
Python: /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
Module load path: ['/usr/local/Cellar/cassandra/2.1.2/bin', '/Library/Python/2.7/site-packages/cql-1.4.0-py2.7.egg', '/Library/Python/2.7/site-packages/thrift-0.9.2-py2.7-macosx-10.10-intel.egg', '/Library/Python/2.7/site-packages/ccm-2.0.2-py2.7.egg', '/Library/Python/2.7/site-packages/tailer-0.3-py2.7.egg', '/Library/Python/2.7/site-packages', '/Library/Python/2.7/site-packages/psutil-2.2.0-py2.7-macosx-10.10-intel.egg', '/Library/Python/2.7/site-packages/pip-6.0.6-py2.7.egg', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC', '/Library/Python/2.7/site-packages']
Error: No module named cassandra

当我在没有 sudo 的情况下执行此操作时,我被允许使用默认登录名进入 cqlsh。问题是当我键入 CREATE USER admn WITH PASSWORD 'pw' SUPERUSER; 时,会返回:

code=2100 [Unauthorized] message="Only superusers are allowed to perform CREATE USER queries"

当我看到这个时,我想,没有可能,并进入了我的cassandra.yaml文件,位于/usr/local/etc/cassandra并更改了authenticator: AllowAllAuthenticatorauthenticator: PasswordAuthenticator.我保存的文件回到cqlsh并重试。相同的结果。有人可以告诉我该怎么做才能设置新用户吗?

你走在正确的轨道上。 默认超级用户帐户是用户名"cassandra"密码"cassandra",您正在正确配置身份验证器。

缺少的是,在更改 cassandra.yaml 文件后,您需要重新启动 cassandra 才能使身份验证器更改生效。 请注意,您还应该将授权方更改为"CassandraAuthorizer"。

如果您有多节点集群,则应在所有节点上进行此更改,并且还应增加system_auth密钥空间上的复制因子,以便允许身份验证在拥有数据的节点出现故障后继续工作。

在将 cassandra 节点从 cqlsh 连接为 cqlsh -u cassandra -p cassandra 之后,我面临着创建新用户的问题。

对我来说,解决方案是:

  1. 编辑 cassandra.yaml 并替换身份验证器和授权方值,如下所示。
身份验证器

:允许全部身份验证器

身份验证器

:密码身份验证器

授权方:AllowAllAuthorizer

授权者

:Cassandra授权者

  1. 重新启动 cassandra 节点

  2. 使用 Cassandra
  3. /Cassandra 凭据从 CQLSH 连接

4.注意一个系统.log(尾部-f系统.log),您应该看到以下消息。

信息 [非定期任务:1] 2015-04-23 11:02:03,973 密码身份验证器.java:215 - 密码身份验证器创建默认用户"cassandra"

信息 [非周期性任务:1] 2015-04-23 11:02:03,987 身份验证.java:277 - 创建了默认超级用户"cassandra"

  1. 在此之前,我没有"system_auth"密钥空间,在此更改之后,现在能够看到"system_auth"密钥空间和"凭据"表。

注意:对于 Cassandra 2.2 及更高版本

"支持创建用户以实现向后兼容性。Cassandra 2.2 及更高版本的身份验证和授权基于 ROLES,应使用 CREATE ROLE。

查看:使用 ROLE 创建新用户


回答你的问题,这对我有用:

在 Cassandra 的配置文件中,cassandra.yaml 修改了这些行:

注释此行:

身份验证器

:全部允许身份验证器

并替换为:

身份验证器

密码身份验证器

注释此行:

授权方

:允许全部授权方

并替换为:

授权者

Cassandra授权者

之后,您可以创建自己的超级用户:

使用密码"your_password"超级用户创建用户your_user_name;

最新更新