知识库

解决 Neo4j Desktop 中的端口冲突

有时在升级或重新安装后,Neo4j Desktop 可能会针对端口 7474、7687、7473 抛出重复的端口冲突异常,同时提供“修复配置”选项。但是,在某些情况下,选择此选项无法解决端口冲突。尝试使用播放按钮启动数据库会导致端口冲突通知,提示修复配置。单击“修复配置”没有任何变化,数据库无法启动。

Desktop Port Conflict1

可以使用bin\neo4j console启动数据库,并且可以通过独立的 Chrome 浏览器访问,而启动 Neo4j 浏览器则会抛出错误,提示凭据无效,请使用:server connect。发出:server connect 会抛出错误,提示提供的凭据无法使用。

Desktop Port Conflict2

首先要检查的是操作系统防火墙和/或防病毒软件是否允许默认/配置的 http、https、bolt 端口。第二个检查是执行nc -l -p <port>,这将检查本地端口可用性,以及端口是否已被其他应用程序/进程使用。其变体是nc -v <hostname> <port>,其中 Neo4j 服务器位于远程实例上。对于 Windows,可以通过命令提示符使用内置的 telnet 工具,例如telnet hostname.domain.com 7687

在进行上述检查后,值得尝试备份位于 MacOSX 上的/Users/user/ /Library/Application Support/或 Windows 上的%USERPROFILE%.Neo4jDesktop\ and %USERPROFILE%\AppData\Roaming\Neo4j Desktop\的 .Neo4jDesktop 目录,然后删除这些目录,然后重新安装所需的 Neo4j Desktop 版本并重新启动操作系统。

如果端口冲突仍然存在,则故障排除的下一步是检查操作系统的hosts文件是否存在潜在问题。Linux 和 Mac OS 上的 hosts 文件位于 (/etc/hosts)。Windows 也有 hosts 文件,在 Windows 上,可以在 \Windows\System32\drivers\etc\ 中找到它。快速检查操作系统是否能够正确解析主机名,可以在 cmd 中执行tracert localhost,这应该会打印单个跳跃。hosts 文件中唯一的行是以下行,如果需要,我们可以注释掉、删除或修改此行或文件。示例输出为

$ traceroute localhost
traceroute to localhost (127.0.0.1), 64 hops max, 52 byte packets
 1  localhost (127.0.0.1)  1.167 ms  0.112 ms  0.085 ms

如果跟踪路由返回空结果,请尝试注释掉 hosts 文件中与 localhost 相关的所有内容。然后,尝试再次运行命令tracert localhost。之后,尝试在 Desktop 中启动图数据库以查看问题是否已解决。在 Desktop 中测试时,应注释掉 hosts 文件中的该行。

上述步骤经过测试,可以缓解遇到的端口冲突问题。