在 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
文件的权限更改为读取
。除了拥有并执行 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 浏览器中执行以下命令
CALL dbms.listConfig() YIELD name, value WHERE name = 'dbms.max_databases' RETURN value
结果将为16
。
注意,默认情况下,neo4j.conf
的文件权限将如下所示。
所有用户,例如已认证用户
、SYSTEM
、管理员
、用户
等,都需要被删除。
此页面是否有帮助?