Cassandra通过sudo可连接但cqlsh直连失败,求等效cqlsh命令
等效的CQLSH命令分析与修正
首先,直接给你对应原sudo命令的等效可执行命令(包含你要执行的查询语句):
#!/bin/bash sudo -u casadm cqlsh node-1 -u cassandra -p '3D4TMobile@' --ssl -e "SELECT * from poh.ne_q_iam;"
为什么这个命令能工作?
我们拆解一下原sudo命令的每一部分,对应到修正后的命令里:
sudo -u casadm:强制以casadm用户身份运行cqlsh,这是你原命令缺失的关键环节——你的环境可能要求特定用户才能访问Cassandra集群,或者该用户有对应的SSL证书权限node-1:明确指定连接的Cassandra节点,你原来的命令默认连接127.0.0.1,但你的集群实际节点是node-1,这也是导致连接关闭错误的核心原因之一-u cassandra -p '3D4TMobile@':使用正确的用户名和密码,注意密码里包含特殊字符@,用单引号包裹可以避免shell对特殊字符做解析--ssl:启用SSL加密连接,你的原命令没有这个参数,而你的Cassandra集群要求SSL验证,这也是连接失败的重要因素-e "SELECT * from poh.ne_q_iam;":追加你要执行的查询语句,和你最初的需求对应
你原命令的问题总结
你的初始命令#!/bin/bash cqlsh -u usename -p password -e "SELECT * from poh.ne_q_iam;"存在几个明显问题:
- 没有指定正确的Cassandra节点(默认连127.0.0.1,而非node-1)
- 未启用SSL连接(缺少
--ssl参数) - 未切换到有权限的
casadm用户执行 - 用户名拼写错误(
usename应为username,且实际正确用户名是cassandra) - 密码使用了占位符
password,而非正确的3D4TMobile@
内容的提问来源于stack exchange,提问作者MhnSkta
相关产品推荐
相关产品推荐

