在构建知识图谱(Knowledge Graph)或图特征存储(Graph Feature Store)时,Neo4j是核心组件。理解其服务端口对于安全部署和高效连接至关重要。Neo4j默认开放了几个关键端口,它们各自承担着不同的职责,确保了Web管理、安全连接和高性能驱动通信。
Contents
1. 7474 和 7473:HTTP/Web API 访问
这两个端口主要用于Neo4j的基于Web的交互和管理。
端口 7474:默认 HTTP
这是非安全的HTTP端口,主要用途包括:
1. Neo4j Browser 访问: 默认情况下,您通过 http://
2. REST API 交互: 允许通过标准的HTTP/REST请求与数据库进行交互,执行Cypher查询或进行数据库管理操作。虽然现代驱动程序更推荐使用 Bolt 协议,但 REST API 在自动化脚本或轻量级集成中仍有应用。
端口 7473:默认 HTTPS
这是安全的HTTPS端口,用于加密的Web访问。在生产环境中,出于安全考虑,强烈推荐关闭 7474 端口,并强制使用 7473 端口进行管理界面和 REST API 的访问。
2. 7687:高性能 Bolt 协议
端口 7687 是 Neo4j 最重要的端口,它承载了现代 Neo4j 客户端驱动程序的默认通信协议——Bolt 协议。
Bolt 协议的优势
- 效率: Bolt 是一个优化的、轻量级的、基于二进制的协议,专为高性能图数据传输设计。
- 原生支持: 所有的官方 Neo4j 驱动(Python、Java、JavaScript、Go 等)都默认通过 7687 端口连接和通信。
- 事务性: Bolt 协议是事务性的,并支持双向消息传递。
在AI应用中,无论是通过Python驱动将模型预测结果写入图数据库,还是从图数据库中提取特征数据供模型训练,都将依赖 7687 端口。
3. 端口配置与实践示例
所有的端口配置都在 Neo4j 的主配置文件 neo4j.conf 中定义。以下是关键配置项:
Neo4j 配置(neo4j.conf)
如果您需要修改这些端口,或限制哪些网络接口可以访问它们,需要修改以下配置:
1
2
3
4
5
6
7 # 允许 HTTP/HTTPS 绑定到所有接口(默认仅限 localhost)
# 生产环境请务必配置防火墙限制访问
# dbms.connector.http.listen_address=:7474
# dbms.connector.https.listen_address=:7473
# Bolt 协议配置
dbms.connector.bolt.listen_address=0.0.0.0:7687
Python 连接 Bolt 端口示例
以下 Python 代码展示了如何使用官方 neo4j 驱动通过 7687 端口连接到数据库并执行查询:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 from neo4j import GraphDatabase
# URI 格式必须使用 'bolt' 协议,默认端口为 7687
URI = "bolt://localhost:7687"
USERNAME = "neo4j"
PASSWORD = "password"
class Neo4jConnector:
def __init__(self, uri, user, password):
self.driver = GraphDatabase.driver(uri, auth=(user, password))
def close(self):
self.driver.close()
def print_greeting(self, message):
with self.driver.session() as session:
greeting = session.execute_write(self._create_and_return_greeting, message)
print(greeting)
@staticmethod
def _create_and_return_greeting(tx, message):
# 这是一个简单的 Cypher 查询示例
result = tx.run("CREATE (a:Greeting) "
"SET a.message = $message "
"RETURN a.message + ', from Neo4j DB'", message=message)
return result.single()[0]
# 实例化并连接 (依赖 7687 端口的开放)
greeter = Neo4jConnector(URI, USERNAME, PASSWORD)
greeter.print_greeting("Hello AI Infra")
greeter.close()
总结与安全建议
| 端口 | 协议 | 用途 | 部署建议 |
|---|---|---|---|
| 7687 | Bolt | 核心数据连接(驱动程序) | 必须开放,但应受网络ACL或防火墙保护 |
| 7474 | HTTP | Web Browser/REST API (非安全) | 生产环境应禁用或严格限制访问 |
| 7473 | HTTPS | Web Browser/REST API (安全) | 推荐使用此端口进行管理访问 |
在部署 Neo4j 服务时,请确保防火墙(如 AWS Security Groups 或 Linux Iptables)只允许受信任的应用程序和管理员 IP 访问这些端口,特别是 7687 和 7473。
汤不热吧