知识库

Neo4j 浏览器和 Cypher Shell 连接问题排查

本页面描述了用户在将 Neo4j Browser 或 cypher-shell 连接到 Neo4j 数据库时可能遇到的常见问题,以及相应的解决方法。

连接超时

症状:连接尝试长时间卡住,随后因连接超时错误而失败。

示例

$ cypher-shell -a 37.204.217.197 -u neo4j -p myPassword
connection timed out: /37.204.217.197:7687

排查步骤

  1. 确保地址正确。

  2. 确保如果服务器在除 7687 之外的端口上监听 Bolt 连接,需要在客户端(例如 cypher-shell)或自编程序中显式指定该端口。

  3. 确保防火墙规则未阻止 Bolt 端口的流量。

此错误的常见原因

  1. 在云上启动的 Neo4j 实例未配置安全组或端口访问。Bolt 在正确地址上可用,但防火墙规则阻止了访问,导致数据包被丢弃,从而出现连接超时。

  2. Neo4j 的非标准配置,例如将 Bolt 运行在除 7687 之外的端口,以符合本地网络策略。

  3. 服务器尚未可用。在启动期间,尤其是数据库正在修复文件或迁移旧库时,Bolt 端点可能不可用。当日志中出现如下信息时,即表示已可用:2018-05-25 13:34:34.584+0000 INFO Bolt enabled on 127.0.0.1:7687.

ServiceUnavailable:WebSocket 连接失败

类似的提示信息可能是:WebSocket connection failure. Due to security constraints in your web browser, the reason for the failure is not available to this Neo4j Driver

症状:可以打开 Neo4j Browser 并输入凭据,但连接时出现关于 WebSocket 连接失败的提示。

image

说明:这通常在 Firefox 以及某些版本的 Internet Explorer 中出现,即 Neo4j Browser 使用不受信任的 SSL 证书时。当用户点击接受例外并允许流量时,浏览器仅对 Neo4j Browser 所在的端口授权,而不是对该主机上的所有端口授权。因此,浏览器的安全策略会阻止对 Bolt 端口的 WebSocket 连接。

可用解决方案:1. 使用受信任的 SSL 证书 2. 按照浏览器的指引信任该服务器在 Bolt 端口上的证书,然后刷新页面 3. 使用 Chrome 4. 在 Neo4j 配置中设置 dbms.connector.bolt.tls_level=OPTIONAL。请注意,这可能导致 Bolt 连接未加密,但可以绕过浏览器对不受信任证书的限制。

© . This site is unofficial and not affiliated with Neo4j, Inc.