将 PasswordAuthenticator 添加到 Docker 实例不会启用身份验证

问题描述 投票:0回答:2

我有一个带有 cassandra 容器的 docker compose 文件。默认情况下,由于 cassandra.yaml 中的 AllowAllAuthenticator,我可以匿名管理数据库,我想要 PasswordAuthenticator。那是我的 docker compose:

cassandra:
    image: cassandra:4.1
    container_name:  "cassdb"
    ports:
      - 9042:9042
    volumes:
      - ./cassandra:/var/lib/cassandra
    environment:
      - CASSANDRA_CLUSTER_NAME=cassclus

我尝试将文件复制到容器外,对其进行编辑并将其发回并重新启动容器。

我还尝试将它复制到容器外,编辑它并用它创建一个卷以便将它加载到 docker compose up 上:

  - ./cassandra.yaml:/etc/cassandra/cassandra.yaml

在这两种情况下,每当从容器内部执行 cqlsh 或 cqlsh -u cassandra -p cassandra 时,我都会收到该错误(我以前没有):

Connection error: ('Unable to connect to any servers', \
  {'127.0.0.1:9042': ConnectionRefusedError(111, \
  "Tried connecting to [('127.0.0.1', 9042)]. \
  Last error: Connection refused")})

我什至尝试添加带有卷的容器,但没有更改我从容器导入的 .yaml,所以我认为它与 PasswordAuthenticator 值本身无关,而是与整个文件相关。

我的主机是Windows,我正在用Visual Studio Code编辑文件,我不知道这是否有什么关系。

docker cassandra cqlsh
2个回答
0
投票

已解决:我不够耐心,工作正常但只需要几分钟来重建整个容器环境。


0
投票

这个问题不断出现,所以我在这里发布,以供将来遇到此问题的人使用。


cqlsh 返回的连接错误几乎总是以下两种情况之一:

  1. 节点宕机,或者
  2. Cassandra 没有在 IP/端口上监听客户端连接。

在这种情况下,它是第 (1) 点,因为操作员没有等待足够长的时间来启动 Cassandra 实例。

操作员注意事项:检查 Cassandra 日志应该是解决问题时的第一步。即使部署在 Docker 容器中,Cassandra 仍然需要执行其启动顺序,而且不是即时的。干杯!

© www.soinside.com 2019 - 2024. All rights reserved.