如何从WSL2连接Windows本地Neo4j桌面数据库?
问题根源与解决方案
问题根源
是的,这就是问题的核心:WSL的网络栈与Windows主机相互隔离,默认情况下WSL无法直接访问Windows上绑定到127.0.0.1(仅本地回环)的服务。再加上Neo4j默认只监听Windows的回环地址,导致WSL中的Python脚本无法建立连接。
解决步骤
1. 修改Neo4j配置,让它监听所有本地IP
要让Windows上的Neo4j能被WSL访问,需要修改Neo4j的配置文件,将服务绑定到0.0.0.0(允许所有本地IP访问):
- 找到Neo4j的配置文件:
- 桌面版:默认路径为
C:\Users\<你的用户名>\.neo4j\neo4j.conf - 命令行版:安装目录下的
conf/neo4j.conf
- 桌面版:默认路径为
- 打开配置文件,找到以下两行并修改:
- 找到
#dbms.default_listen_address=127.0.0.1,去掉开头的#,改为:dbms.default_listen_address=0.0.0.0 - 找到
#dbms.connector.bolt.listen_address=:7687,去掉开头的#,改为:dbms.connector.bolt.listen_address=0.0.0.0:7687
- 找到
- 重启Neo4j服务:
- 桌面版:在Neo4j Desktop中选中目标实例,点击「Restart」按钮
- 命令行版:执行
neo4j restart命令
2. 在WSL中使用Windows主机IP连接Neo4j
WSL里不能直接用localhost访问Windows服务,需要用Windows主机的实际IPv4地址:
- 在Windows的命令提示符(CMD)中执行
ipconfig,找到对应网络适配器的IPv4地址(比如192.168.3.10) - 修改Python脚本中的连接字符串,将
bolt://localhost:7687替换为bolt://<Windows_IP>:7687,例如:from neo4j import GraphDatabase driver = GraphDatabase.driver("bolt://192.168.3.10:7687", auth=("neo4j", "你的密码"))
3. 确保Windows防火墙允许端口访问
如果修改后仍无法连接,检查Windows防火墙是否拦截了7687端口:
- 打开「Windows Defender防火墙」→「高级设置」→「入站规则」
- 新建规则:选择「端口」→ 输入
7687(TCP)→ 允许连接→ 应用到所有网络类型→ 命名规则(比如「Neo4j Bolt端口」)
测试连接(可选)
在WSL终端中执行以下命令,验证端口是否可达:
nc -zv <Windows_IP> 7687
如果输出succeeded!说明端口已开放。
内容的提问来源于stack exchange,提问作者Arne Rustad
相关产品推荐
相关产品推荐

