以root用户身份运行弹性搜索

San*_*gde 19 linux elasticsearch elasticsearch-plugin

当我尝试使用命令启动弹性搜索5.0并获得以下错误时,我./elasticsearch得到以下错误.

[2016-11-23T13:44:09,507][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:116) ~[elasticsearch-5.0.1.jar:5.0.1]
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:103) ~[elasticsearch-5.0.1.jar:5.0.1]
    at org.elasticsearch.cli.SettingCommand.execute(SettingCommand.java:54) ~[elasticsearch-5.0.1.jar:5.0.1]
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:96) ~[elasticsearch-5.0.1.jar:5.0.1]
    at org.elasticsearch.cli.Command.main(Command.java:62) ~[elasticsearch-5.0.1.jar:5.0.1]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:80) ~[elasticsearch-5.0.1.jar:5.0.1]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:73) ~[elasticsearch-5.0.1.jar:5.0.1]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
    at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:96) ~[elasticsearch-5.0.1.jar:5.0.1]
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:155) ~[elasticsearch-5.0.1.jar:5.0.1]
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:286) ~[elasticsearch-5.0.1.jar:5.0.1]
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:112) ~[elasticsearch-5.0.1.jar:5.0.1]
    ... 6 more
Run Code Online (Sandbox Code Playgroud)

我试图通过切换到其他用户开始尝试sudo ./elasticsearch并得到相同的错误.如何以root用户身份开始弹性搜索?

Dev*_*ish 9

Elasticsearch不能以root用户身份运行。Elasticsearch本身对此进行了限制。当我们安装elasticsearch时,会自动创建一个名为elasticsearch的新用户和名为elasticsearch的组。可以使用以下命令检查条目

$ sudo less /etc/passwd | grep "elasticsearch"
$ sudo less /etc/group | grep "elasticsearch"
Run Code Online (Sandbox Code Playgroud)

我们需要更改所有与Elasticsearch相关的文件的所有权。请按照以下步骤操作。

脚步:

1.使用下面的示例cmd将所有与ES相关的文件的所有权从root更改为elasticsearch。

$ sudo chown elasticsearch:elasticsearch -R /usr/share/elasticsearch
$ sudo chown elasticsearch:elasticsearch -R /var/log/elasticsearch
$ sudo chown elasticsearch:elasticsearch -R /var/lib/elasticsearch
$ sudo chown elasticsearch:elasticsearch -R /etc/default/elasticsearch
$ sudo chown elasticsearch:elasticsearch -R /etc/elasticsearch
Run Code Online (Sandbox Code Playgroud)

2.打开/etc/default/elasticsearch文件并执行以下操作

  a)JAVA_HOME=your/java/home/path
  b)add the following entries at the end
      i)   START_DAEMON=true
      ii)  ES_USER=elasticsearch
      iii) ES_GROUP=elasticsearch
Run Code Online (Sandbox Code Playgroud)

3.现在启用Elasticsearch服务并启动

  $ sudo systemctl enable elasticsearch
  $ sudo systemctl start elasticsearch
  $ sudo systemctl status elasticsearch
Run Code Online (Sandbox Code Playgroud)

4.使用curl测试elasticsearch。假设您的主机IP为192.168.5.194,并且ES在端口9200上运行

$ curl -X GET ‘192.168.5.194:9200’
Run Code Online (Sandbox Code Playgroud)

完成了!

参考 :https : //stackoverflow.com/a/48390311/1445978


小智 7

此问题的根本原因是:不允许ElasticSearch从root用户运行.此问题还有另一种可能性"仅为root用户设置Java路径,而不是为所有其他用户设置Java路径".解决这个问题:

步骤1:通过命令将elasticSearch目录的所有权从root更改为其他用户. $ sudo chown -R current_User:Group_Name elasticsearch-5.5.0

Setp 2:在类路径中检查当前用户的Java集[不仅适用于root].如果命令:$ java -version或echo $ JAVA_HOME命令给出空结果.这意味着我们应该在当前用户的classpath [system env varible]中设置Java,然后按照步骤3.否则启动elasticsearch服务.

步骤3:编辑/ etc/profile并根据系统dir导出添加两行JAVA_HOME ="Java目录位置"

export PATH = $ JAVA_HOME/bin:$ PATH运行$ source source/etc/profile

在此之后运行elasticSearch服务.它对我很有帮助.


tru*_*ler 5

有两种方法可以解决这个问题:

方法一: 下载 zip 文件 n 解压后按以下命令启动

bin/elasticsearch -Des.insecure.allow.root=true -d
Run Code Online (Sandbox Code Playgroud)

方法二:

vi bin/elasticsearch
Run Code Online (Sandbox Code Playgroud)

添加允许 root 的属性:

ES_JAVA_OPTS="-Des.insecure.allow.root=true"
Run Code Online (Sandbox Code Playgroud)

保存并关闭。 您现在可以从 root 开始。

  • 此解决方法不再有效。看来他们刚刚完全删除了这个选项。它绝对不适用于 ES 7.X。也许也适用于某些早期版本。 (2认同)

小智 0

之前针对 ES2 曾询问过这个问题(How to run Elasticsearch 2.1.1 as root user in Linux machine

相同的解决方案可能适用于 5 个。

如前所述,您可能不应该这样..