Mac安装Cassandra后遇‘JMX未启用远程连接’问题求助
解决Mac上Cassandra的JMX远程连接报错问题
当Cassandra启动时出现以下报错:
JMX is not enabled to receive remote connections.
Please see cassandra-env.sh for more info.
按以下步骤修改cassandra-env.sh配置:
1. 确认文件路径(Mac环境)
如果是通过Homebrew安装的Cassandra,配置文件路径通常是:
- Intel芯片:
/usr/local/etc/cassandra/cassandra-env.sh - M1/M2芯片:
/opt/homebrew/etc/cassandra/cassandra-env.sh
如果你的路径确实是/etc/cassandra/,直接用你之前的命令打开即可:
nano /etc/cassandra/cassandra-env.sh
2. 修改JMX配置
在打开的文件中,找到以下关键配置段:
步骤1:启用JMX端口
找到被注释的JMX_PORT="7199",去掉前面的#号,确保端口开启:
JMX_PORT="7199"
步骤2:开启远程JMX连接
找到LOCAL_JMX的配置行,默认是LOCAL_JMX="yes",将其改为"no":
LOCAL_JMX="no"
如果是测试环境不需要认证,可以修改认证相关配置为关闭(跳过密码验证):
找到以下代码段:
# if [ "$LOCAL_JMX" = "yes" ]; then # JVM_OPTS="$JVM_OPTS -Dcassandra.jmx.local.port=$JMX_PORT" # JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=false" # else # JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true" # JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password" # JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.access.file=/etc/cassandra/jmxremote.access" # fi
修改后确保else块中的authenticate=false,或者直接调整为:
if [ "$LOCAL_JMX" = "yes" ]; then JVM_OPTS="$JVM_OPTS -Dcassandra.jmx.local.port=$JMX_PORT" JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=false" else JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=false" fi
3. 保存并退出文件
在nano编辑器中:
- 按
Ctrl+O,回车确认保存 - 按
Ctrl+X退出编辑器
4. 重启Cassandra服务
根据你的安装方式重启服务:
- Homebrew安装:
brew services restart cassandra
- 其他方式:
sudo systemctl restart cassandra
注意事项
- 生产环境建议开启JMX认证,需要配置
jmxremote.password和jmxremote.access文件,设置合法的用户名和权限 - 确保Mac防火墙开放7199端口,避免远程连接被拦截
内容的提问来源于stack exchange,提问作者Nii Joshua
相关产品推荐
相关产品推荐

