当我尝试使用命令./elasticsearch
启动弹性搜索5.0并获得以下错误时,我得到以下错误。
[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
我尝试通过切换到其他用户并尝试sudo ./elasticsearch
并尝试相同的错误。
如何以root用户身份开始弹性搜索?
答案 0 :(得分:7)
此问题的根本原因是: 不允许ElasticSearch从root用户运行。 这个问题还有另一种可能性"仅为root用户设置Java路径,而不是为所有其他用户设置#34;。 解决这个问题:
步骤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并根据系统目录添加两行 export JAVA_HOME =" Java目录位置"
export PATH = $ JAVA_HOME / bin:$ PATH 跑 $ source source / etc / profile
此后运行elasticSearch服务。它非常适合我。
答案 1 :(得分:6)
Elasticsearch不能以root用户身份运行。 Elasticsearch本身对此进行了限制。当我们安装elasticsearch时,会自动创建一个名为elasticsearch的新用户和名为elasticsearch的组。可以使用以下命令检查条目
$ sudo less /etc/passwd | grep "elasticsearch"
$ sudo less /etc/group | grep "elasticsearch"
我们需要更改所有elasticsearch related files的所有权。请按照以下步骤操作。
步骤:
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
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
3。现在启用elasticsearch服务并启动
$ sudo systemctl enable elasticsearch
$ sudo systemctl start elasticsearch
$ sudo systemctl status elasticsearch
4。使用curl测试elasticsearch。假设您的主机IP为192.168.5.194,并且ES在端口9200上运行
$ curl -X GET ‘192.168.5.194:9200’
完成!
答案 2 :(得分:2)
我遇到了同样的问题,我不得不与另一个用户联系。但首先,我必须授予他执行bin / elasticsearch的权利。
答案 3 :(得分:2)
有两种方法可以解决此问题:
<强>方法一:强> 下载zip文件n解压缩然后按照以下命令开始
bin/elasticsearch -Des.insecure.allow.root=true -d
<强>方法2:强>
vi bin/elasticsearch
为允许root添加属性:
ES_JAVA_OPTS="-Des.insecure.allow.root=true"
保存并关闭。 您现在可以从root开始。
答案 4 :(得分:1)
从根文件夹运行bin / elasticsearch是一个常见的错误。
答案 5 :(得分:1)
-Ees.insecure.allow.root
方法不适用于我,就像我在7.9.0版本中一样。
我懒得去@Devasish提到的chown
方法。
相反,尝试了一些冗长的操作:
为弹性搜索创建非root用户:
ubuntu ~ # adduser elasticuser
必须使用adduser
命令,而不是useradd。
adduser
将自动创建主目录。
将Elastic-search文件夹从root的主目录复制到elasticuser的主目录:
ubuntu ~ # cp -R ./elasticsearch-7.9.0 /home/elasticuser/elasticsearch-7.9.0
切换到非root用户:
ubuntu ~ # su - elasticuser
现在,从非root用户运行弹性搜索:
elasticuser@ubuntu ~ $ ./elasticsearch-7.9.0/bin/elasticsearch
答案 6 :(得分:1)
为什么要以root用户身份运行所有内容。使用普通用户而不是root用户。
切换到普通用户并运行它。如果您没有其他用户,请参考Linuxize document来创建用户。
如果您不能以普通用户身份运行它,请检查文件的权限,使用 chmod 777
有关更多详细信息,请参阅chmod wiki document。
如果要使用root用户,请在弹性搜索文件夹中执行以下命令。
./elasticsearch -Des.insecure.allow.root=true
重新运行弹性搜索。它一定可以工作。
答案 7 :(得分:0)
之前曾询问ES2(How to run Elasticsearch 2.1.1 as root user in Linux machine)
同样的解决方案可能适用于5。
如前所述,你可能不应该这样......
答案 8 :(得分:0)
创建一个单独的用户而不授予sudo
特权。
例如:adduser elasticsearch
然后将该文件夹的所有权授予该用户
例如:chown -R elasticsearch:elasticsearch elasticsearch-folder
然后切换到该用户
例如:su elasticsearch
现在尝试运行服务
例如:./elasticsearch-xxx/bin/elasticsearch
答案 9 :(得分:0)
稍晚的答复,但现在仍然有用。 当我遵循this时,我遇到了同样的问题,最后的办法是更改已解压缩的文件夹的所有权。
sudo chown <nonrootuser> <unzipped-es-folder> -R
确实做到了。
P.S我是在Ubuntu 17.04 LTS上完成的。
答案 10 :(得分:0)
如果您尝试使用systemd
或作为服务运行,请确保您的.service
文件以用户和组elasticsearch的身份运行。您可以在“服务”字段下指定您的用户和组。
通常位于/etc/systemd/system/elasticsearch.service
中:
[Service]
Type=simple
ExecStart=/usr/share/elasticsearch/bin/elasticsearch
Restart=on-failure
RestartSec=10
KillMode=process
User=elasticsearch
Group=elasticsearch
答案 11 :(得分:0)
在 centos 8 上,
adduser elasticuser
chown -R elasticuser:elasticsearch /usr/share/elasticsearch/
chown -R elasticuser:elasticsearch /etc/sysconfig/elasticsearch
chown -R elasticuser:elasticsearch /etc/elasticsearch
chown -R elasticuser:elasticsearch /var/log/elasticsearch/
chown -R elasticuser:elasticsearch /var/lib/elasticsearch
运行弹性搜索:
su elasticuser
/usr/share/elasticsearch/bin/elasticsearch