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 地址访问(推荐)
在 WSL 中查询 IP:
bash
ip addr show eth0 | grep inet
假设得到 IP 为
172.27.176.123在 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 界面修改
在 Windows 浏览器访问
http://WSL_IP:7474(如http://172.27.176.123:7474)使用
neo4j/neo4j登录按提示设置新密码
方法二:通过 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:7474 | WSL_IP 通过ip addr查询 |
| 默认访问方式(单实例) | http://localhost:7474 | 仅限默认 WSL 发行版 |
| HTTP 端口 | 7474 | Web 管理界面 |
| Bolt 端口 | 7687 | 应用程序连接 |
| 查看 WSL IP | ip 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 环境进行了适配和优化。如果遇到任何具体问题,欢迎随时反馈!