You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu16.04安装Cassandra后cqlsh连接失败求助

解决Ubuntu 16.04中Cassandra后台启动无法连接cqlsh的问题

这问题我之前帮朋友排查过,核心原因就是前台用sudo启动Cassandra是root权限,而后台服务默认用cassandra用户运行,权限或者配置不匹配导致的,咱们一步步来解决:

1. 先确认Cassandra后台服务的状态

首先得搞清楚后台服务是不是真的正常启动了:

  • 运行命令查看服务状态:
    sudo systemctl status cassandra
    
    如果显示active (running)那还好,要是failed或者inactive,就看系统日志找错误:
    journalctl -u cassandra.service
    
  • 最常见的问题就是权限:Cassandra的数据目录(/var/lib/cassandra)和日志目录(/var/log/cassandra)的属主必须是cassandra:cassandra,你可以检查一下:
    ls -ld /var/lib/cassandra /var/log/cassandra
    
    如果属主是root,就修改权限:
    sudo chown -R cassandra:cassandra /var/lib/cassandra /var/log/cassandra
    

2. 检查Cassandra的监听配置

打开Cassandra的主配置文件,确认几个关键参数:

sudo nano /etc/cassandra/cassandra.yaml

重点看这三个参数:

  • listen_address:默认是localhost,如果被改成了其他IP,cqlsh默认连127.0.0.1就会被拒绝,改回localhost即可;
  • rpc_address:这是CQL客户端(比如cqlsh)连接的地址,默认也是localhost,如果设成了0.0.0.0或者其他IP,你需要用cqlsh <对应IP>来连接;
  • start_rpc:必须设为true,不然Cassandra不会启动CQL服务,默认是true,但万一被误改了呢?

3. 检查9042端口是否被占用

Cassandra的CQL默认端口是9042,要是被其他程序占用了,后台启动时就无法绑定这个端口,导致连接拒绝:

sudo netstat -tulpn | grep 9042

或者用lsof:

sudo lsof -i :9042

如果有其他进程占用,要么停掉那个进程,要么修改Cassandra的端口(在cassandra.yaml里改native_transport_port参数)。

4. 重启服务并验证

改完配置或权限后,重启Cassandra服务:

sudo systemctl restart cassandra

注意Cassandra启动需要一点时间,等个30秒左右,再尝试连接:

cqlsh

或者指定IP和端口:

cqlsh 127.0.0.1 9042

一般来说,做完这些步骤就能解决后台启动无法连接的问题了,毕竟前台能正常启动说明Cassandra本身是没问题的,就是后台运行的环境(权限、配置)有差异。

内容的提问来源于stack exchange,提问作者Disha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:23:58