使用APOC 3.3.0.1时Neo4j部分系统过程缺失的技术咨询
先直接说最可能的核心问题:你大概率使用的是Neo4j社区版,而dbms.security.listUsers、dbms.changePassword、dbms.showCurrentUser这类用户管理相关的系统过程,是Neo4j企业版独有的功能,社区版本身就不包含这些过程。
下面分情况梳理原因和对应解决办法:
核心限制:版本edition差异
社区版Neo4j只提供基础的图存储与查询能力,用户创建/删除、密码修改、权限管控这类企业级特性,仅在Neo4j企业版中开放。如果必须使用这些安全管理过程,你需要切换到与APOC 3.3.0.1匹配的Neo4j 3.3.x系列企业版。修正APOC配置的小错误
你当前配置的dbms.security.procedures.unrestricted=algo.*, apoc*里,apoc*的写法有误,正确格式应该是apoc.*(少了个点)。虽然这个错误不会导致系统过程缺失,但会影响APOC插件的正常调用,建议修正为:dbms.security.procedures.unrestricted=algo.*,apoc.*修改后记得重启Neo4j服务让配置生效。
检查过程白名单是否有限制
如果你的neo4j.conf里手动配置了dbms.security.procedures.allowlist参数,且没有包含这些dbms.security相关过程,也会导致它们不显示。默认情况下该参数是注释状态(允许所有过程),如果之前手动修改过,需要确保加入对应过程名,比如:dbms.security.procedures.allowlist=dbms.security.*,dbms.showCurrentUser,...这里要再次强调:社区版就算配置了白名单也没用,因为这些过程本身就不存在于社区版的安装包中。
你可以通过CALL dbms.components()查看当前Neo4j的版本和edition,如果返回结果里显示edition: community,就坐实了是社区版的限制问题。
内容的提问来源于stack exchange,提问作者mlo0424

