管理连接

列出所有网络连接

一个管理员能够查看数据库实例中的所有网络连接。或者,当前用户可以查看他们自己的所有网络连接。

过程 dbms.listConnections 列出所有已接受的,针对所有已配置连接器的网络连接,包括 Bolt、HTTP 和 HTTPS。一些列出的连接可能永远不会执行身份验证。例如,对 Neo4j 浏览器端点的 HTTP GET 请求会获取静态资源,不需要身份验证。但是,使用 Neo4j 浏览器建立的连接要求用户提供凭据并执行身份验证。有关 Neo4j 浏览器连接的更多信息,请参阅Neo4j 浏览器文档

语法

CALL dbms.listConnections()

表 1. 从数据库检索的数据
名称 类型 描述

connectionId

字符串

这是网络连接的 ID。

connectTime

字符串

这是开始连接的时间。

connector

字符串

接受连接的连接器的名称。

username

字符串

这是发起连接的用户用户名。如果事务是使用嵌入式 API 发出的,则此字段将为 null。如果连接未执行身份验证,它也可能为 null。

userAgent

字符串

已连接软件的名称。对于 HTTP 和 HTTPS 连接,此信息是从 User-Agent 请求标头中提取的。对于 Bolt 连接,用户代理在本地可用,并在初始化消息中提供。

serverAddress

字符串

此连接连接到的服务器地址。

clientAddress

字符串

连接的客户端地址。

表 2. 默认 userAgent 字符串格式
Neo4j 客户端代理 userAgent 默认字符串格式 示例

Cypher Shell

"neo4j-cypher-shell/v${version}"

"neo4j-cypher-shell/v4.3.0"

Neo4j 浏览器

"neo4j-browser/v${version}"

"neo4j-browser/v4.3.0"

Neo4j Bloom

"neo4j-bloom/v${version}"

"neo4j-bloom/v1.7.0"

Neo4j Java 驱动

"neo4j-java/x.y.z"

"neo4j-java/1.6.3"

Neo4j .Net 驱动程序

"neo4j-dotnet/x.y"

"neo4j-dotnet/4.3"

Neo4j Go 驱动程序

"Go Driver/x.y"

"Go Driver/4.3"

Neo4j Python 驱动程序

"neo4j-python/x.y Python/x.y.z-a-b (<操作系统>)"

"neo4j-python/4.3 Python/3.7.6 (Linux)"

Neo4j JavaScript 驱动程序

"neo4j-javascript/x.y.z"

"neo4j-javascript/4.3.0"

示例 1. 列出所有网络连接

以下示例显示用户“alwood”正在使用 Java 驱动程序和 Firefox 网络浏览器连接。过程调用会生成有关连接的特定信息,即connectionIdconnectTimeconnectorusernameuserAgentclientAddress

CALL dbms.listConnections() YIELD connectionId, connectTime, connector, username, userAgent, clientAddress
╒══════════════╤══════════════════════════╤═══════════╤══════════╤════════════════════════════════════════════════════════════════════════════════════╤═════════════════╤═════════╕
│"connectionId"│"connectTime"             │"connector"│"username"│"userAgent"                                                                         │"clientAddress"  │"status" │
╞══════════════╪══════════════════════════╪═══════════╪══════════╪════════════════════════════════════════════════════════════════════════════════════╪═════════════════╪═════════╡
│"bolt-21"     │"2018-10-10T12:11:42.276Z"│"bolt"     │"alwood"  │"neo4j-java/1.6.3"                                                                  │"127.0.0.1:53929"│"Running"│
├──────────────┼──────────────────────────┼───────────┼──────────┼────────────────────────────────────────────────────────────────────────────────────┼─────────────────┼─────────┤
│"http-11"     │"2018-10-10T12:37:19.014Z"│"http"     │null      │"Mozilla/5.0 (Macintosh; Intel macOS 10.13; rv:62.0) Gecko/20100101 Firefox/62.0"│"127.0.0.1:54118"│"Running"│
└──────────────┴──────────────────────────┴───────────┴──────────┴────────────────────────────────────────────────────────────────────────────────────┴─────────────────┴─────────┘
2 rows

终止多个网络连接

一个管理员能够在实例中终止具有任何给定 ID 的所有网络连接。或者,当前用户可以终止其自身具有任何给定 ID 的所有网络连接。

语法

CALL dbms.killConnections(connectionIds)

参数

名称 类型 描述

ids

List<String>

这是要终止的所有连接的 ID 列表。

返回值

名称 类型 描述

connectionId

字符串

这是已终止连接的 ID。

username

字符串

这是发起(现在已终止)连接的用户名称。

message

字符串

一条消息,说明是否成功找到连接。

注意事项

Bolt 连接是有状态的。终止 Bolt 连接会导致正在进行的查询/事务终止。

终止 HTTP/HTTPS 连接可能会终止正在进行的 HTTP/HTTPS 请求。

示例 2. 终止多个网络连接

以下示例显示管理员已终止 ID 为“bolt-37”和“https-11”的连接,分别由用户“joesmith”和“annebrown”启动。管理员还尝试终止 ID 为“http-42”的连接,但该连接不存在。

CALL dbms.killConnections(['bolt-37', 'https-11', 'http-42'])
╒══════════════╤═══════════╤══════════════════════════════════╕
│"connectionId"│"username" │"message"                         │
╞══════════════╪═══════════╪══════════════════════════════════╡
│"bolt-37"     │"joesmith" │"Connection found"                │
├──────────────┼───────────┼──────────────────────────────────┤
│"https-11"    │"annebrown"│"Connection found"                │
├──────────────┼───────────┼──────────────────────────────────┤
│"http-42"     │"n/a"      │"No connection found with this id"│
└──────────────┴───────────┴──────────────────────────────────┘
3 rows

终止单个网络连接

一个管理员能够在实例中终止具有给定 ID 的任何网络连接。或者,当前用户可以终止其自身具有给定 ID 的网络连接。

语法

CALL dbms.killConnection(connectionId)

参数

名称 类型 描述

id

字符串

这是要终止的连接的 ID。

返回值

名称 类型 描述

connectionId

字符串

这是已终止连接的 ID。

username

字符串

这是发起(现在已终止)连接的用户名称。

message

字符串

一条消息,说明是否成功找到连接。

注意事项

Bolt 连接是有状态的。终止 Bolt 连接会导致正在进行的查询/事务终止。

终止 HTTP/HTTPS 连接可能会终止正在进行的 HTTP/HTTPS 请求。

示例 3. 终止单个网络连接

以下示例显示用户“joesmith”已终止其 ID 为“bolt-4321”的连接。

CALL dbms.killConnection('bolt-4321')
╒══════════════╤═══════════╤══════════════════╕
│"connectionId"│"username" │"message"         │
╞══════════════╪═══════════╪══════════════════╡
│"bolt-4321"   │"joesmith" │"Connection found"│
└──────────────┴───────────┴──────────────────┘
1 row

以下示例显示尝试终止不存在的连接 ID 时输出的结果。

CALL dbms.killConnection('bolt-987')
╒══════════════╤═══════════╤══════════════════════════════════╕
│"connectionId"│"username" │"message"                         │
╞══════════════╪═══════════╪══════════════════════════════════╡
│"bolt-987"    │"n/a"      │"No connection found with this id"│
└──────────────┴───────────┴──────────────────────────────────┘
1 row