Elasticsearch启动报错:java.lang.RuntimeException: can not run elasticsearch as root

当尝试启动Elasticsearch时,遇到了一个错误提示,表明不能以root用户身份运行。为了解决这个问题,需要创建一个新的用户,如'es',然后切换到该用户来启动Elasticsearch服务。执行'useradd es'和'su es'命令后,再尝试启动ES即可避免此错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        Elasticsearch启动报错:

org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-6.8.9.jar:6.8.9]
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~[elasticsearch-6.8.9.jar:6.8.9]
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.8.9.jar:6.8.9]
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.8.9.jar:6.8.9]
        at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.8.9.jar:6.8.9]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:116) ~[elasticsearch-6.8.9.jar:6.8.9]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[elasticsearch-6.8.9.jar:6.8.9]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
        at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:103) ~[elasticsearch-6.8.9.jar:6.8.9]
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:170) ~[elasticsearch-6.8.9.jar:6.8.9]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:333) ~[elasticsearch-6.8.9.jar:6.8.9]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-6.8.9.jar:6.8.9]
        ... 6 more

        这个意思是ES不能使用root用户启动,只能通过建立其它用户来启动,可以建立一个es用户来启动:       

useradd es

su es

      切换回来后再启动es即可

### 解决Elasticsearch启动错误 `java.lang.IllegalStateException` 当遇到`org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException:` 错误提示未能获取节点锁时,这通常意味着指定的数据目录不可写入或者存在多个实例尝试在同一位置锁定文件[^1]。 对于具体报错信息中的“No match found”,可能是因为正则表达式匹配失败或者是配置文件路径设置不正确引起的。然而,在当前上下文中更贴切的原因可能是由于数据存储路径权限不足或已有其他进程占用该路径造成的无法获得独占访问权的情况。 #### 可能原因分析 - 数据目录权限不够:如果运行 Elasticsearch 的用户没有足够的权限来读取、写入 `/home/elasticsearch-6.3.0/data/elasticsearch` 文件夹,则会触发此异常。 - 多个节点竞争同一数据目录:默认情况下,单台机器上只允许一个 Elasticsearch 实例绑定到给定的数据目录;如果有超过一个的服务试图这样做而未调整参数 `node.max_local_storage_nodes` ,也会抛出同样的异常。 #### 推荐解决方案 为了修复这个问题: - **检查并修正数据目录权限** 确保用于启动服务的账户拥有对上述提到的数据目录及其子文件夹完整的控制权限。可以通过命令行工具修改相应文件夹属性实现这一点。 ```bash sudo chown -R elasticsearch:elasticsearch /home/elasticsearch-6.3.0/data/elasticsearch/ ``` - **确认是否有重复实例正在运行** 有时旧版本的服务可能会残留后台继续执行从而阻止新安装正常工作。可以先停止所有已知的相关进程再重新尝试开启新的实例。 - **适当增加本地存储节点数量限制(仅适用于多节点部署场景)** 编辑配置文件 `elasticsearch.yml` 并找到选项 `node.max_local_storage_nodes` 。将其值设为大于现有实际使用的节点数目即可解决问题。 ```yaml path.data: /home/elasticsearch-6.3.0/data/elasticsearch/ node.max_local_storage_nodes: 2 # 或者更大数值取决于需求 ``` 完成以上操作之后重启 Elasticsearch 应用程序应该能够恢复正常运作状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值