Rocky Linux on WSL 安装 Neo4j 完整方案

📋 方案概述

本方案基于官方 RPM 仓库,在 Rocky Linux(运行于 WSL)系统上安装 Neo4j 图数据库。由于 WSL 的特殊网络环境,需要特别注意 IP 地址的获取和 Windows 宿主机的访问配置。


🚀 详细安装步骤

第一步:添加 Neo4j 官方仓库

bash

# 导入官方 GPG 密钥(用于验证软件包完整性) sudo rpm --import https://debian.neo4j.com/neotechnology.gpg.key # 创建 Neo4j 仓库配置文件 sudo cat <<EOF | sudo tee /etc/yum.repos.d/neo4j.repo [neo4j] name=Neo4j RPM Repository baseurl=https://yum.neo4j.com/stable/latest enabled=1 gpgcheck=1 EOF

💡 版本选择说明

  • stable/latest:安装最新稳定版(当前为 2025.x,需要 Java 21)

  • stable/5:安装 Neo4j 5.x 系列(需要 Java 17)

  • stable/4:安装 Neo4j 4.x 系列(需要 Java 11)

根据你的应用兼容性选择合适的版本。


第二步:安装 Neo4j

bash

# 清理缓存并安装社区版(免费) sudo dnf clean dbcache sudo dnf install neo4j

安装企业版(如需)

bash

# 企业版需要接受许可协议 NEO4J_ACCEPT_LICENSE_AGREEMENT=eval sudo dnf install neo4j-enterprise

第三步:启动服务

bash

# 启动 Neo4j 服务 sudo systemctl start neo4j # 设置开机自启 sudo systemctl enable neo4j # 查看运行状态 sudo systemctl status neo4j

⚠️ WSL 注意事项
WSL 默认不启用systemd,如果systemctl命令无法使用,可以手动启动 Neo4j:

bash

# 方法1:直接启动 sudo neo4j start # 方法2:启用 systemd(推荐,后续会统一管理) # 详见文末的 WSL systemd 启用指南

第四步:配置远程访问(WSL 环境关键步骤)

重要:WSL 实例默认只能从 Windows 宿主机通过 localhost 访问,需要正确配置 Neo4j 监听地址。

bash

# 编辑配置文件 sudo vi /etc/neo4j/neo4j.conf

修改或添加以下配置:

properties

# 监听所有网络接口(WSL 内必须设置为 0.0.0.0) server.default_listen_address=0.0.0.0 # 设置对外公布的地址为 WSL 的 IP server.default_advertised_address=你的WSL_IP

重启服务生效:

bash

sudo systemctl restart neo4j # 或手动重启 sudo neo4j restart

第五步:WSL 特定配置 - 获取 IP 地址

由于 WSL 每次重启后 IP 地址可能变化,需要在 Rocky Linux 内查询当前 IP:

bash

# 查看 WSL 的 IP 地址(eth0 接口) ip addr show eth0 | grep inet | awk '{print $2}' | cut -d/ -f1 # 或更简洁的方式 hostname -I | awk '{print $1}'

获取 WSL IP 的完整步骤

bash

# 方法1:显示所有网络接口 ip addr # 方法2:仅显示 IP 地址 ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}' # 方法3:使用 hostname 命令 hostname -I

📌 示例输出

text

172.27.176.123 # 这就是你的 WSL IP 地址

第六步:从 Windows 访问 WSL 中的 Neo4j

方式一:通过 WSL IP 地址访问(推荐)
  1. 在 WSL 中查询 IP

    bash

    ip addr show eth0 | grep inet

    假设得到 IP 为172.27.176.123

  2. 在 Windows 浏览器中访问

    text

    http://172.27.176.123:7474
方式二:通过 localhost 访问(仅限默认 WSL 实例)

如果 WSL 是默认发行版,也可以尝试:

text

http://localhost:7474

⚠️ 注意

  • 如果 WSL 有多个发行版,只有默认实例才能用localhost访问

  • 非默认实例必须使用具体的 WSL IP 地址


第七步:防火墙设置

在 Rocky Linux on WSL 中,通常 WSL 的网络防火墙限制较少,但为了确保访问:

bash

# 检查 Neo4j 是否正常监听 sudo ss -tlnp | grep -E '7474|7687' # 如果 firewalld 正在运行,开放端口 sudo firewall-cmd --permanent --add-port=7474/tcp sudo firewall-cmd --permanent --add-port=7687/tcp sudo firewall-cmd --reload # 如果 firewalld 未运行(WSL 常见),检查端口监听状态即可 sudo systemctl status firewalld

💡 WSL 防火墙说明
WSL 默认不启用firewalld,通常不需要额外配置防火墙。关键是要确认 Neo4j 监听在0.0.0.0


第八步:修改默认密码

Neo4j 初始用户名和密码均为neo4j,首次使用必须修改密码。

方法一:通过 Web 界面修改

  1. 在 Windows 浏览器访问http://WSL_IP:7474(如http://172.27.176.123:7474

  2. 使用neo4j/neo4j登录

  3. 按提示设置新密码

方法二:通过 WSL 命令行修改

bash

# 连接 Neo4j(输入密码:neo4j) cypher-shell -u neo4j -p neo4j # 修改密码(将 '新密码' 替换为你的密码) ALTER CURRENT USER SET PASSWORD FROM 'neo4j' TO '新密码'; # 退出 :exit

第九步:验证安装(WSL 环境)

bash

# 检查服务状态 sudo systemctl status neo4j # 或手动检查 sudo neo4j status # 查看 Neo4j 版本 sudo neo4j version # 测试连接(本地测试) cypher-shell -u neo4j -p '新密码' "RETURN 'Neo4j 安装成功!' AS message;" # 从 Windows 测试(在 PowerShell 或 CMD 中) curl http://WSL_IP:7474


📝 应用程序配置示例(WSL 环境)

如果你的应用程序运行在 Windows 上,需要连接 WSL 中的 Neo4j:

yaml

# application.yml spring: neo4j: uri: bolt://WSL_IP:7687 # 使用 WSL 的 IP 地址 authentication: username: neo4j password: 你修改后的密码

properties

# application.properties spring.neo4j.uri=bolt://WSL_IP:7687 spring.neo4j.authentication.username=neo4j spring.neo4j.authentication.password=你修改后的密码

🔧 常用 WSL 网络排查命令

bash

# 查看 WSL 的 IP 地址 ip addr show eth0 # 测试 Windows 到 WSL 的连通性(在 Windows PowerShell 中) ping WSL_IP # 检查端口监听状态 sudo ss -tlnp | grep 7474 # 查看所有监听端口 sudo netstat -tlnp

⚠️ WSL 特定常见问题

问题 1:Windows 浏览器无法访问 WSL 的 Neo4j

原因

  • Neo4j 未监听0.0.0.0(默认只监听127.0.0.1

  • WSL IP 地址发生变化

  • Windows 防火墙阻止

解决

bash

# 1. 确认 Neo4j 监听地址 sudo grep "server.default_listen_address" /etc/neo4j/neo4j.conf # 2. 确认当前 WSL IP ip addr show eth0 # 3. 测试端口连通性(在 Windows PowerShell 中) Test-NetConnection -ComputerName WSL_IP -Port 7474

问题 2:WSL 重启后 IP 地址变化

解决:每次 WSL 重启后,重新查询 IP 地址并更新客户端配置:

bash

# 创建脚本自动获取 IP echo '#!/bin/bash' > ~/get_wsl_ip.sh echo 'ip addr show eth0 | grep inet | awk "{print \$2}" | cut -d/ -f1' >> ~/get_wsl_ip.sh chmod +x ~/get_wsl_ip.sh ./get_wsl_ip.sh

或在 Windows PowerShell 中通过 WSL 命令获取:

powershell

wsl -d RockyLinux -- ip addr show eth0 | grep inet | awk '{print $2}' | cut -d/ -f1

问题 3:systemctl 无法使用

WSL 默认不启用 systemd,可以:

方案一:手动启动 Neo4j

bash

sudo neo4j start sudo neo4j stop sudo neo4j restart sudo neo4j status

方案二:启用 WSL systemd(推荐)

bash

# 1. 编辑 WSL 配置文件 sudo vi /etc/wsl.conf # 2. 添加以下内容 [boot] systemd=true # 3. 在 Windows PowerShell 中重启 WSL wsl --shutdown wsl -d RockyLinux # 4. 验证 systemd systemctl status

问题 4:端口被 Windows 占用

现象:Neo4j 启动失败,提示端口 7474 或 7687 已被占用

解决

bash

# 1. 检查端口占用 sudo ss -tlnp | grep 7474 # 2. 修改 Neo4j 端口配置 sudo vi /etc/neo4j/neo4j.conf # 修改为其他端口,如 7475 server.http.listen_address=0.0.0.0:7475 server.bolt.listen_address=0.0.0.0:7688 # 3. 重启 Neo4j sudo neo4j restart

📊 WSL 环境端口和地址速查表

项目说明
WSL 内监听地址0.0.0.0必须设置,否则无法从外部访问
Windows 访问地址http://WSL_IP:7474WSL_IP 通过ip addr查询
默认访问方式(单实例)http://localhost:7474仅限默认 WSL 发行版
HTTP 端口7474Web 管理界面
Bolt 端口7687应用程序连接
查看 WSL IPip addr show eth0每次重启可能变化

✅ WSL 环境安装检查清单

  • GPG 密钥导入成功

  • 仓库配置文件/etc/yum.repos.d/neo4j.repo已创建

  • 软件包安装成功(sudo dnf install neo4j

  • Neo4j 已启动(sudo neo4j status

  • 配置server.default_listen_address=0.0.0.0

  • 已获取 WSL IP 地址(ip addr show eth0

  • Windows 浏览器能访问http://WSL_IP:7474

  • 默认密码已修改

  • 应用程序能正常连接


以上方案专门针对 Rocky Linux on WSL 环境进行了适配和优化。如果遇到任何具体问题,欢迎随时反馈!