启动cqlsh shell时,它给我连接到cassandra数据库的错误

时间:2019-10-01 08:51:28

标签: cassandra cqlsh

我正在尝试与cqlsh连接,但这给了我以下错误:

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

我已经在终端上尝试了cqlsh命令:

cqlsh

3 个答案:

答案 0 :(得分:0)

之所以这样,是因为您没有提供cqlsh可以连接的IP地址。然后,它假定使用“归属” IP(127.0.0.1),并且我猜测您没有绑定到该地址的正在运行的Cassandra节点。

首先,grep表示您的节点绑定到的地址:

$ grep "_address:" cassandra.yaml 

listen_address: 192.168.1.3 
broadcast_address: 10.2.1.30
rpc_address: 192.168.1.3 
broadcast_rpc_address: 10.2.1.30

如果您的broadcast_地址与已定义的监听/ rpc地址不同,则应使用该地址(内部IP与外部IP ...您需要外部IP)。在这种情况下,cqlsh命令将如下所示:

cqlsh 10.2.1.30 -u username -p password

答案 1 :(得分:0)

有几种情况可以回答您的问题: 1)Cassandra没有运行 2)Cassandra没有使用该主机/ IP监听/运行(127.0.0.1) 3)Cassandra没有在9042端口上监听 4)防火墙阻止了该主机/端口

1)检查它是否在运行

ps -ef | grep cassandra (or dse if using dse)

2)检查cassandra.yaml中的native_transport_address以查看用于主机的IP。 0.0.0.0很好(如果您设置了native_transport_broadcast_address)

3)检查cassandra.yaml中的native_transport_port以查看使用的端口

4)Telnet到主机/端口,以确保没有任何障碍

telnet 127.0.0.1 9042

您应该会看到类似于以下内容的输出:

Connected to XXXXXXXX.
Escape character is '^]'.

如果不这样做,并且所有其他检查都通过了,则说明存在某些障碍(防火墙)。

请注意,cassandra.yaml中使用的参数适用于Cassandra 3.11(我相信dse 5.X +)。如果使用的是旧版本,则参数会有所不同。

-吉姆

答案 2 :(得分:0)

我得到了一个解决方案,必须在终端上依次执行两个查询。

  1. 卡桑德拉
  2. cqlsh 127.0.0.1 9042(端口)