如果以root身份運行將會出現以下問題,這個錯誤,是因爲使用root用戶啓動elasticsearch,elasticsearch是不允許使用root用戶啓動的
[root@iZbp1epx1ncetamddfjnxwZ bin]# ./elasticsearch
[2018-01-02T17:42:42,296][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:125) ~[elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.1.1.jar:6.1.1]
at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.1.1.jar:6.1.1]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85) ~[elasticsearch-6.1.1.jar:6.1.1]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:104) ~[elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:171) ~[elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:322) ~[elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-6.1.1.jar:6.1.1]
... 6 more
ES5之後[解決方法1],[解決辦法2],已經不能用了,請使用[解決辦法3],[解決辦法4]
解決方法1:
在執行elasticSearch時加上參數-Des.insecure.allow.root=true,完整命令如下
解決辦法2:
用vim打開elasicsearch執行文件,在變量ES_JAVA_OPTS使用前添加以下命令
如下圖所示,這個方法的好處是以後不用添加參數就能以root身份執行了
解決辦法3:
我們需要添加用戶。
adduser *** //添加用戶
passwd *** //給用戶賦值
添加完用戶之後:
用root用戶執行 : chown -R 文件夾名 用戶名
將這幾個壓縮包所在的文件夾及解壓完的文件夾權限給你新建的用戶。之後再使用新用戶啓動就OK了。
參考:https://www.cnblogs.com/yidiandhappy/p/7737003.html,http://blog.csdn.net/u010317005/article/details/52205825
解決辦法4:
如果是用root賬號啓動,會報以下錯誤
Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root. at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:93) at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:144) at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:285) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35) Refer to the log for complete error details.
這是出於系統安全考慮設置的條件。由於ElasticSearch可以接收用戶輸入的腳本並且執行,爲了系統安全考慮,
建議創建一個單獨的用戶用來運行ElasticSearch創建elsearch用戶組及elsearch用戶
groupadd elsearch useradd elsearch -g elsearch -p elasticsearch
更改elasticsearch文件夾及內部文件的所屬用戶及組爲elsearch:elsearch
cd /opt chown -R elsearch:elsearch elasticsearch
切換到elsearch用戶再啓動
su elsearch cd elasticsearch/bin ./elasticsearch
啓動後打印信息如下
[2015-12-30 10:15:44,876][WARN ][bootstrap ] unable to install syscall filter: prctl(PR_GET_NO_NEW_PRIVS): Invalid argument [2015-12-30 10:15:45,175][INFO ][node ] [Grim Hunter] version[2.1.1], pid[26383], build[40e2c53/2015-12-15T13:05:55Z] [2015-12-30 10:15:45,176][INFO ][node ] [Grim Hunter] initializing ... [2015-12-30 10:15:45,243][INFO ][plugins ] [Grim Hunter] loaded [], sites [] [2015-12-30 10:15:45,272][INFO ][env ] [Grim Hunter] using [1] data paths, mounts [[/ (/dev/mapper/vg_yong-lv_root)]], net usable_space [33.3gb], net total_space [49gb], spins? [no], types [ext4] [2015-12-30 10:15:47,318][INFO ][node ] [Grim Hunter] initialized [2015-12-30 10:15:47,318][INFO ][node ] [Grim Hunter] starting ... [2015-12-30 10:15:47,388][INFO ][discovery ] [Grim Hunter] elasticsearch/fnXUCLOQQBiC1aR7hhB82Q [2015-12-30 10:15:50,442][INFO ][cluster.service ] [Grim Hunter] new_master {Grim Hunter}{fnXUCLOQQBiC1aR7hhB82Q}{127.0.0.1}{127.0.0.1:9300}, reason: zen-disco-join(elected_as_master, [0] joins received) [2015-12-30 10:15:50,491][INFO ][node ] [Grim Hunter] started [2015-12-30 10:15:50,526][INFO ][gateway ] [Grim Hunter] recovered [0] indices into cluster_state
ElasticSearch後端啓動命令
./elasticsearch -d