问题:
[root@dnode1 bin]# ./elasticsearch -d [root@dnode1 bin]# Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root. at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:94) at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:160) at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:286) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:45) Refer to the log for complete error details.
解答:
Elasticsearch 2.*版本之后出于对系统安全考虑设置的条件。由于ElasticSearch可以接收用户输入的脚本并且执行,为了系统安全考虑,默认如果使用root用户运行就会报"java.lang.RuntimeException"的错误,解决如下:
1、添加使用root运行的参数 vi bin/elasticsearch ES_JAVA_OPTS="-Des.insecure.allow.root=true" 或者设置别名: alias elasticsearch='elasticsearch -Des.insecure.allow.root=true' 可以添加到/root/.bashrc 中让其生效 或者启动直接传参启动: bin/elasticsearch -Des.insecure.allow.root=true
2、添加普通用户启动
创建elsearch用户组及elsearch用户 :
groupadd elsearch
useradd elsearch -g elsearch
更改elasticsearch文件夹及内部文件的所属用户及组为elsearch:elsearch :
chown -R elsearch:elsearch elasticsearch
使用elsearch用户启动elasticsearch:
cd elasticsearch/bin
runuser -l elsearch -c "./elasticsearch -d"