管理连接

列出所有网络连接

管理员能够查看数据库实例内的所有网络连接。此外,当前用户可以查看其自己的所有网络连接。

存储过程 `dbms.listConnections` 列出所有已配置连接器(包括 Bolt、HTTP 和 HTTPS)的所有已接受网络连接。某些列出的连接可能从不执行身份验证。例如,对 Neo4j Browser 端点的 HTTP GET 请求会获取静态资源,无需身份验证。然而,使用 Neo4j Browser 建立的连接需要用户提供凭证并执行身份验证。有关 Neo4j Browser 连接的更多信息,请参阅 Neo4j Browser 文档

语法

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 Browser

"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/3.7.6 (Linux)"

"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 网页浏览器连接。该存储过程调用提供了关于连接的具体信息,即 `connectionId`、`connectTime`、`connector`、`username`、`userAgent` 和 `clientAddress`。

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
© . All rights reserved.