在 Windows 上使用命令扩展的示例
**命令扩展**功能在 **Neo4j 4.2** 中引入,是一项安全功能,旨在避免将配置参数以明文形式写入 neo4j.conf
文件。
这些命令在子进程中由*拥有并执行 Neo4j 服务器*的用户执行。因此,根据定义,只有运行 Neo4j 进程/服务的用户才能使用此功能。
命令扩展对 neo4j.conf
文件上分配的权限非常敏感。如果权限未设置正确,则 Neo4j 将无法启动并显示类似以下的消息:
Exception in thread "main" java.lang.IllegalArgumentException:
<NEO4J_HOME>/conf/neo4j.conf does not have the correct file permissions to evaluate commands.
Has [OWNER_READ, OWNER_WRITE, OTHERS_READ, GROUP_READ], requires at most [OWNER_READ, OWNER_WRITE].
at org.neo4j.configuration.Config$Builder.validateFilePermissionForCommandExpansion(Config.java:314)
at org.neo4j.configuration.Config$Builder.build(Config.java:287)
at org.neo4j.server.NeoBootstrapper.start(NeoBootstrapper.java:110)
at org.neo4j.server.NeoBootstrapper.start(NeoBootstrapper.java:90)
at com.neo4j.server.enterprise.EnterpriseEntryPoint.main(EnterpriseEntryPoint.java:25)
2021-03-03 16:56:23.880+0000 INFO [c.n.s.e.EnterpriseBootstrapper] Neo4j Server shutdown initiated by request
2021-03-03 16:56:23.891+0000 INFO [c.n.s.e.EnterpriseBootstrapper] Stopped.
这就是本文的需求所在!
此外,Neo4j 文档提供了基于 Linux 安装的示例,因此这里提供一个在 Windows 上使用命令扩展的有趣示例(分步说明)
-
修改
neo4j.conf
文件,使其包含以下设置
dbms.max_databases=$(my_setting.bat)
-
创建一个环境变量
MAX_DATABASES=16
-
创建一个简单的批处理文件
my_setting.bat
@ECHO OFF
ECHO %MAX_DATABASES%
-
将
neo4j.conf
文件的权限更改为Read
(读取)。移除除*拥有并执行 Neo4j 服务器*的用户之外的所有用户组和用户名。请参考下图
在 Linux 环境中,这等同于 r-- --- ---
,可以通过以下命令完成
$chmod 400 neo4j.conf
-
使用以下命令启动 Neo4j -
C:\neo4j-enterprise-4.2.3-windows\neo4j-enterprise-4.2.3\bin>neo4j console --expand-commands
启动过程中,控制台会显示以下 INFO 消息
2021-03-04 03:17:40.575+0000 INFO Command expansion is explicitly enabled for configuration
2021-03-04 03:17:40.577+0000 INFO Executing external script to retrieve value of setting dbms.max_databases
2021-03-04 03:17:40.579+0000 INFO Starting...
2021-03-04 03:17:43.311+0000 INFO ======== Neo4j 4.2.3 ========
2021-03-04 03:17:45.825+0000 INFO Sending metrics to CSV file at C:\neo4j-enterprise-4.2.3-windows\neo4j-enterprise-4.2.3\metrics
2021-03-04 03:17:45.860+0000 INFO Bolt enabled on 0.0.0.0:7617.
2021-03-04 03:17:46.818+0000 INFO Remote interface available at http://localhost:7414/
2021-03-04 03:17:46.819+0000 INFO Started.
-
要确认
dbms.max_databases
属性已设置为16
,请在 Neo4j Browser 中执行以下命令
CALL dbms.listConfig() YIELD name, value WHERE name = 'dbms.max_databases' RETURN value
结果将是 16
。
**请注意**,默认情况下,neo4j.conf
文件的权限如下所示。
需要移除所有用户,例如 Authenticated Users
(经过身份验证的用户)、SYSTEM
(系统)、Administrators
(管理员)、Users
(用户)等。
本页面有帮助吗?