管理标准数据库的数据库别名AuraDB Business CriticalAuraDB Virtual Dedicated Cloud企业版
可以通过对 system 数据库执行一组 Cypher 管理命令来创建和管理数据库别名。所需权限在 DBMS 别名管理权限中有详细说明。当通过 Bolt 连接到 DBMS 时,管理命令会自动路由到 system 数据库。
|
如果事务修改了数据库别名,为了安全起见,其他并发针对该别名执行的事务可能会被中止并回滚。这可以防止诸如同一别名在同一事务中针对多个目标数据库执行等问题。 |
数据库别名有两种类型:本地和远程
- 本地数据库别名
-
本地数据库别名只能指向同一 DBMS 内的数据库。它可以在所有 Cypher 命令中代替目标数据库使用。请注意,本地数据库别名将在执行命令时解析。权限是针对目标数据库定义的,而不是针对本地数据库别名。
- 远程数据库别名
-
远程数据库别名可以指向来自另一个 Neo4j DBMS 的数据库。它可以用于:
-
连接到远程 Neo4j DBMS 的数据库。
远程数据库别名需要进行配置才能安全地连接到远程目标,相关说明请参见 连接远程数据库。通过远程数据库别名,无法在远程数据库上模拟用户或执行管理命令。 -
USE子句。 -
定义对远程数据库的访问权限。
-
2025.06 版本引入 为发送到远程数据库的查询设置默认 Cypher 版本。
-
|
从 Neo4j 2025.06 开始,数据库或远程别名可以指定默认 Cypher 版本。但是,本地数据库别名无法指定默认 Cypher 版本。它们始终使用其目标数据库的 Cypher 版本。 |
当针对数据库别名运行查询时,它将被重定向到目标数据库。用户的主数据库(home database)可以设置为别名,该别名在被使用时将解析为目标数据库。从 Neo4j 2025.04 开始,数据库别名也可以设置为 DBMS 的默认数据库。
本页介绍了如何管理标准数据库的数据库别名。有关作为 复合数据库 一部分创建的别名,请参见 管理复合数据库中的数据库别名。
列出数据库别名
您可以使用 SHOW ALIASES FOR DATABASE 命令列出所有可用的数据库别名。该命令返回一个包含所有数据库别名的表,无论它们是否属于复合数据库。
如果您需要更多详细信息,可以在命令后附加 YIELD *。YIELD * 子句返回完整的列集合。所需权限在 DBMS 别名管理权限中有详细说明。
| 列 | 描述 | 类型 | 默认输出 |
|---|---|---|---|
|
数据库别名的全限定名称。 |
|
|
|
此别名所属的复合数据库名称;如果别名不属于复合数据库,则为 |
|
|
|
目标数据库的名称。 此列根据用户的
如果用户未被授予目标数据库的 |
|
|
|
数据库的位置,即 |
|
|
|
目标位置,如果目标是本地则为 |
|
|
|
2026.01 版本引入 用于连接远程数据库的凭据类型,即 |
|
|
|
连接到远程数据库的原生用户;如果目标数据库是本地的,或者使用 OIDC 凭据转发进行远程认证,则为 |
|
|
|
用于连接远程数据库的驱动程序选项;如果目标数据库是本地的,则为 |
|
|
|
2025.06 版本引入 非组成部分的远程数据库别名的默认语言;如果是组成部分或本地数据库别名,则为 |
|
|
|
在数据库别名上设置的任何属性。 |
|
显示所有数据库别名
要列出所有数据库别名,请使用不带任何额外参数的 SHOW ALIASES FOR DATABASE 命令。此命令返回 DBMS 中所有数据库的所有数据库别名,包括本地和远程别名。
SHOW ALIASES FOR DATABASE
+--------------------------------------------------------------------------------------------------------------------------+ | name | composite | database | location | url | credentials | user | +--------------------------------------------------------------------------------------------------------------------------+ | "films" | NULL | "movies" | "local" | NULL | NULL | NULL | | "motion pictures" | NULL | "movies" | "local" | NULL | NULL | NULL | | "movie scripts" | NULL | "scripts" | "remote" | "neo4j+s://location:7687" | "STORED NATIVE CREDENTIALS" | "alice" | +--------------------------------------------------------------------------------------------------------------------------+
显示特定数据库别名
要仅列出一个数据库别名,SHOW ALIASES 命令接受一个别名名称。
SHOW ALIAS films FOR DATABASES
+--------------------------------------------------------------------------+ | name | composite | database | location | url | credentials | user | +--------------------------------------------------------------------------+ | "films" | NULL | "movies" | "local" | NULL | NULL | NULL | +--------------------------------------------------------------------------+
显示所有数据库别名的详细信息
要查看所有数据库别名的所有列,请在 SHOW ALIASES FOR DATABASE 命令中使用 YIELD * 子句。
SHOW ALIASES FOR DATABASE YIELD *
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| name | composite | database | location | url | credentials | user | driver | defaultLanguage | properties |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| "films" | NULL | "movies" | "local" | NULL | NULL | NULL | NULL | NULL | {} |
| "motion pictures" | NULL | "movies" | "local" | NULL | NULL | NULL | NULL | NULL | {namecontainsspace: TRUE} |
| "movie scripts" | NULL | "scripts" | "remote" | "neo4j+s://location:7687" | "STORED NATIVE CREDENTIALS" | "alice" | {connection_pool_idle_test: PT2M, connection_pool_max_size: 10, logging_level: "INFO", ssl_enforced: TRUE, connection_pool_acquisition_timeout: PT1M, connection_timeout: PT5S, connection_max_lifetime: PT1H} | "CYPHER 25" | {} |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
显示数据库别名数量
要查看数据库别名的数量,请配合 YIELD 和 RETURN 使用 count() 聚合函数。
SHOW ALIASES FOR DATABASE YIELD *
RETURN count(*) as count
+-------+ | count | +-------+ | 3 | +-------+
过滤和排序数据库别名
您可以使用 YIELD、ORDER BY 和 WHERE 子句来过滤和排序 SHOW ALIASES FOR DATABASE 命令的结果。YIELD 子句允许您指定要返回的列,ORDER BY 子句根据指定的列对结果进行排序。WHERE 子句根据条件过滤结果。
SHOW ALIASES FOR DATABASE YIELD name, url, database
ORDER BY database
WHERE name CONTAINS 'e'
在此示例中
-
使用
YIELD子句减少了返回的列数。 -
返回列的顺序已更改。
-
使用
ORDER BY按database列对结果进行排序。 -
过滤结果,仅显示包含
'e'的数据库别名名称。
也可以使用 SKIP 和 LIMIT 对结果进行分页。
+-----------------------------------------------------------+ | name | url | database | +-----------------------------------------------------------+ | "motion pictures" | NULL | "movies" | | "movie scripts" | "neo4j+s://location:7687" | "scripts" | +-----------------------------------------------------------+
创建数据库别名
您可以使用 CREATE ALIAS 命令创建本地和远程数据库别名。有关作为复合数据库一部分的本地和远程数据库别名的更多信息,请参见 创建复合数据库中的数据库别名。
所需权限在 DBMS 别名管理权限中有详细说明。
|
数据库别名名称受 别名名称 一节中指定的规则约束。 |
为本地数据库创建数据库别名
本地数据库别名指向同一 DBMS 内的数据库。不支持图(graph)或属性分片(property shard)目标。
CREATE ALIAS `northwind` FOR DATABASE `northwind-graph-2021`
创建本地数据库别名后,它将显示在 SHOW DATABASES 命令提供的 aliases 列中,以及 SHOW ALIASES FOR DATABASE 命令中。
SHOW DATABASE `northwind`
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | name | type | aliases | access | address | role | writer | requestedStatus | currentStatus | statusMessage | default | home | constituents | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | "northwind-graph-2021" | "standard" | ["northwind"] | "read-write" | "localhost:7687" | "primary" | TRUE | "online" | "online" | "" | FALSE | FALSE | [] | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
SHOW ALIAS `northwind` FOR DATABASE
+-----------------------------------------------------------------------------------------+ | name | composite | database | location | url | credentials | user | +-----------------------------------------------------------------------------------------+ | "northwind" | NULL | "northwind-graph-2021" | "local" | NULL | NULL | NULL | +-----------------------------------------------------------------------------------------+
在创建数据库别名时使用 IF EXISTS 或 OR REPLACE
CREATE ALIAS 命令是可选幂等的,默认行为是如果数据库别名已存在则报错。为避免这种情况,您可以在命令后附加 IF EXISTS 或 OR REPLACE。两者都会检查给定名称的任何远程或本地数据库别名;IF NOT EXISTS 还会检查是否已存在同名的数据库。
-
在命令后附加
IF NOT EXISTS。这确保了如果已存在同名数据库或数据库别名,不会返回错误,也不会执行任何操作。查询CREATE ALIAS `northwind` IF NOT EXISTS FOR DATABASE `northwind-graph-2021` -
在命令后附加
OR REPLACE。这意味着如果已存在同名的数据库别名,它将被新的别名替换。查询CREATE OR REPLACE ALIAS `northwind` FOR DATABASE `northwind-graph-2021`这等同于执行
DROP ALIAS `northwind` IF EXISTS FOR DATABASE,然后执行CREATE ALIAS `northwind` FOR DATABASE `northwind-graph-2021`。
|
这些命令中的 |
设置本地数据库别名的属性
您可以使用 CREATE ALIAS 命令的 PROPERTIES 子句为本地数据库别名设置属性。这些属性稍后可在查询中使用 graph.propertiesByName() 函数调用。例如:
CREATE ALIAS `northwind-2022`
FOR DATABASE `northwind-graph-2022`
PROPERTIES { newestNorthwind: true, index: 3 }
要验证属性是否已设置,请使用带有 YIELD 子句的 SHOW ALIASES FOR DATABASE 命令。
SHOW ALIAS `northwind-2022` FOR DATABASE YIELD name, properties
+------------------------------------------------------+
| name | properties |
+------------------------------------------------------+
| "northwind-2022" | {index: 3, newestnorthwind: TRUE} |
+------------------------------------------------------+
为远程数据库创建数据库别名
数据库别名可以通过提供 URL 和远程 Neo4j DBMS 上的用户凭据来指向远程数据库。有关必要的配置,请参见 配置远程数据库别名。
由于远程数据库别名指向不在当前 DBMS 中的数据库,因此它们不会像本地数据库别名那样从目标获取默认 Cypher 版本。相反,它们被分配由 db.query.default_language 给出的版本(在 neo4j.conf 文件中设置)。或者,您可以在 CREATE ALIAS 或 ALTER ALIAS 命令中指定版本。有关详细信息,请参见 为远程数据库别名设置默认 Cypher 版本 和 更改远程数据库别名的默认 Cypher 版本。
创建远程数据库别名时,需要指定用于连接到远程 DBMS 的凭据。您可以在两种类型的凭据之间进行选择:
-
STORED NATIVE CREDENTIALS,使用远程 DBMS 上单个原生用户的凭据。 -
2026.01 版本引入
OIDC CREDENTIAL FORWARDING,转发来自本地 DBMS 上已登录用户的 bearer 身份验证令牌。用户必须使用支持 OIDC 的身份提供商登录。
您也可以在创建远程数据库别名时使用 IF EXISTS 或 OR REPLACE。其工作方式与 在创建数据库别名时使用 IF EXISTS 或 OR REPLACE 一节中描述的相同。两者都会检查任何远程或本地数据库别名(IF NOT EXISTS 还会检查数据库)。
使用存储的原生凭据创建远程数据库别名
您可以通过在创建别名时指定 USER 和 PASSWORD 子句,使用存储的原生凭据创建远程数据库别名。例如:
CREATE ALIAS `remote-northwind-stored-credentials` FOR DATABASE `northwind-graph-2020`
AT "neo4j+s://location:7687"
USER alice
PASSWORD 'example_secret'
使用 SHOW ALIASES FOR DATABASE 命令验证远程数据库别名是否已正确创建。
SHOW ALIAS `remote-northwind-stored-credentials`
FOR DATABASE
+-----------------------------------------------------------------------------------------------------------------------------------------------------------+ | name | composite | database | location | url | credentials | user | +-----------------------------------------------------------------------------------------------------------------------------------------------------------+ | "remote-northwind-stored-credentilas" | NULL | "northwind-graph-2020" | "remote" | "neo4j+s://location:7687" | "STORED NATIVE CREDENTIALS" | "alice" | +-----------------------------------------------------------------------------------------------------------------------------------------------------------+
使用 OIDC 凭据转发创建远程数据库别名
您可以通过在创建别名时指定 OIDC CREDENTIAL FORWARDING 子句来使用 OIDC 凭据转发创建远程数据库别名。OIDC CREDENTIAL FORWARDING 子句将远程数据库别名配置为使用已登录用户的 OIDC 凭据进行身份验证。要使用此方法进行身份验证,本地和远程 DBMS 都必须配置通过实现 OIDC 标准的身份提供商进行 SSO 身份验证和授权。有关如何配置 OIDC 身份提供商的详细信息,请参见 SSO 集成。
CREATE ALIAS `remote-northwind-oidc-credential-forwarding` FOR DATABASE `northwind-graph-2020`
AT "neo4j+s://location:7687"
OIDC CREDENTIAL FORWARDING
由于别名在指向远程 DBMS 时使用已登录用户的凭据,因此没有存储的凭据,并且用户将显示为 NULL。
SHOW ALIAS `remote-northwind-oidc-credential-forwarding`
FOR DATABASE
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | name | composite | database | location | url | credentials | user | +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | "remote-northwind-oidc-credential-forwarding" | NULL | "northwind-graph-2020" | "remote" | "neo4j+s://location:7687" | "OIDC CREDENTIAL FORWARDING" | NULL | +--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
使用驱动程序设置创建远程数据库别名
可以针对每个数据库别名覆盖用于连接到远程数据库的默认驱动程序设置。
这是允许用于远程数据库别名的驱动程序设置列表:
-
ssl_enforced(默认:true)— 远程数据库别名驱动程序的 SSL 通过目标 URL 方案进行配置。如果ssl_enforced设置为 true,则强制执行安全 URL 方案。该方案将在命令执行时进行验证。 -
connection_timeout(详细信息请参见 dbms.routing.driver.connection.connect_timeout。) -
connection_max_lifetime(详细信息请参见 dbms.routing.driver.connection.max_lifetime。) -
connection_pool_acquisition_timeout — 详细信息请参见 dbms.routing.driver.connection.pool.acquisition_timeout。
-
connection_pool_idle_test — 详细信息请参见 dbms.routing.driver.connection.pool.idle_test。
-
connection_pool_max_size(详细信息请参见 dbms.routing.driver.connection.pool.max_size。) -
logging_level(详细信息请参见 dbms.routing.driver.logging.level。)
您可以使用 CREATE ALIAS 或 ALTER ALIAS 命令的 DRIVER 子句,在创建远程数据库别名时设置这些驱动程序设置。例如,以下查询创建了一个远程数据库别名,并使用驱动程序设置 connection_timeout 和 connection_pool_max_size 连接到远程数据库 northwind-graph-2020:
CREATE ALIAS `remote-with-driver-settings` FOR DATABASE `northwind-graph-2020`
AT "neo4j+s://location:7687"
USER alice
PASSWORD 'example_secret'
DRIVER {
connection_timeout: duration({minutes: 1}),
connection_pool_max_size: 10
}
要查看包括驱动程序设置在内的远程数据库别名详细信息,请使用带有 YIELD * 子句的 SHOW ALIASES FOR DATABASE 命令。
SHOW ALIAS `remote-with-driver-settings` FOR DATABASE YIELD *
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| name | composite | database | location | url | credentials | user | driver | properties |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| "remote-with-driver-settings" | NULL | "northwind-graph-2020" | "remote" | "neo4j+s://location:7687" | "STORED NATIVE CREDENTIALS" | "alice" | {connection_pool_max_size: 10, connection_timeout: PT1M} | {} |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
为远程数据库别名设置默认 Cypher 版本引入于 2025.06
您可以使用 CREATE ALIAS 或 ALTER ALIAS 命令的 DEFAULT LANGUAGE 子句为远程数据库别名设置默认 Cypher 版本。例如,以下查询创建了一个默认语言为 CYPHER 25 的远程数据库别名:
CREATE ALIAS `remote-with-default-language`
FOR DATABASE `northwind-graph-2020`
AT "neo4j+s://location:7687"
USER alice
PASSWORD 'example_secret'
DEFAULT LANGUAGE CYPHER 25
要查看包括默认语言在内的远程数据库别名详细信息,请使用带有 YIELD 子句的 SHOW ALIASES FOR DATABASE 命令。
SHOW ALIAS `remote-with-default-language` FOR DATABASE YIELD name, defaultLanguage
+--------------------------------------------------+ | name | defaultLanguage | +--------------------------------------------------+ | "remote-with-default-language" | "CYPHER 25" | +--------------------------------------------------+
|
将默认语言设置为 |
设置远程数据库别名的属性
您可以使用 CREATE ALIAS 命令的 PROPERTIES 子句为远程数据库别名设置属性。这些属性稍后可在查询中使用 graph.propertiesByName() 函数调用。
CREATE ALIAS `remote-northwind-2021` FOR DATABASE `northwind-graph-2021` AT 'neo4j+s://location:7687'
USER alice PASSWORD 'password'
PROPERTIES { newestNorthwind: false, index: 6 }
要查看远程数据库别名的属性,请使用带有 YIELD 子句的 SHOW ALIASES FOR DATABASE 命令。
SHOW ALIAS `remote-northwind-2021` FOR DATABASE YIELD name, properties
+--------------------------------------------------------------+
| name | properties |
+--------------------------------------------------------------+
| "remote-northwind-2021" | {index: 6, newestnorthwind: FALSE} |
+--------------------------------------------------------------+
更改数据库别名
您可以使用 ALTER ALIAS 命令更改本地和远程数据库别名。对于所有别名,该命令允许您更改目标数据库和数据库别名的属性。对于远程别名,该命令还允许您更改 URL、用户凭据、默认语言或驱动程序设置。所需权限在 DBMS 别名管理权限中有详细说明。仅会更改所使用的子句。
|
本地数据库别名不能更改为远程别名,反之亦然。 |
更改本地数据库别名的目标
您可以使用 ALTER ALIAS 命令的 SET DATABASE TARGET 子句更改本地数据库别名的目标数据库。例如:
ALTER ALIAS `northwind`
SET DATABASE TARGET `northwind-graph-2021`
要验证本地数据库别名是否具有新目标数据库,可以使用 SHOW DATABASE 命令。它会显示在目标数据库的 aliases 列中。
SHOW DATABASE `northwind-graph-2021`
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | name | type | aliases | access | address | role | writer | requestedStatus | currentStatus | statusMessage | default | home | constituents | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | "northwind-graph-2021" | "standard" | ["northwind"] | "read-write" | "localhost:7687" | "primary" | TRUE | "online" | "online" | "" | FALSE | FALSE | [] | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
更改远程数据库别名的目标
您可以使用 ALTER ALIAS 命令的 SET DATABASE TARGET 子句更改远程数据库别名,使其指向不同的远程数据库。例如:
ALTER ALIAS `remote-northwind`
SET DATABASE TARGET `northwind-graph-2020` AT "neo4j+s://other-location:7687"
更改远程数据库别名存储的原生凭据和驱动程序设置
您可以使用 ALTER ALIAS 命令的 SET DATABASE 子句的 USER、PASSWORD 和 DRIVER 子句更改远程数据库别名的存储原生凭据和驱动程序设置。例如:
ALTER ALIAS `remote-with-driver-settings`
SET DATABASE
USER bob
PASSWORD 'new_example_secret'
DRIVER {
connection_timeout: duration({ minutes: 1}),
logging_level: 'debug'
}
|
所有驱动程序设置都会被新的设置替换。在这种情况下,如果不重复设置 |
更改远程数据库别名的凭据类型2026.01 中引入
目前不支持使用 ALTER ALIAS 命令更改远程数据库别名的凭据类型(STORED NATIVE CREDENTIALS 或 OIDC CREDENTIAL FORWARDING)。要更改凭据类型,必须删除该远程数据库别名并将其替换为新别名。
|
删除别名后,所有相关的权限、驱动程序设置和其他属性都将丢失,需要为新别名重新指定。有关如何管理远程数据库别名的访问权限和其他权限的信息,请参见 数据库权限。 |
从远程数据库别名中删除所有自定义驱动程序设置
您可以通过将 DRIVER 子句设置为空映射 {},从远程数据库别名中删除所有自定义驱动程序设置。
ALTER ALIAS `movie scripts` SET DATABASE
DRIVER {}
更改远程数据库别名的默认 Cypher 版本引入于 2025.06
您可以使用 ALTER ALIAS 命令的 SET DATABASE DEFAULT LANGUAGE 子句更改远程数据库别名的默认 Cypher 版本。例如:
ALTER ALIAS `remote-with-default-language`
SET DATABASE DEFAULT LANGUAGE CYPHER 5
|
将默认语言设置为 |
更改本地和远程数据库别名的属性
您可以使用 ALTER ALIAS 命令的 SET DATABASE PROPERTIES 子句更改本地或远程数据库别名的属性。例如:
ALTER ALIAS `motion pictures` SET DATABASE PROPERTIES { nameContainsSpace: true, moreInfo: 'no, not really' }
ALTER ALIAS `movie scripts` SET DATABASE PROPERTIES { nameContainsSpace: true }
更新后的属性随后可在查询中使用 graph.propertiesByName() 函数。
删除数据库别名
您可以使用 DROP ALIAS 命令删除本地和远程数据库别名。所需权限在 DBMS 别名管理权限中有详细说明。
删除本地数据库别名
您可以使用 DROP ALIAS 命令删除本地数据库别名。例如:
DROP ALIAS `northwind` FOR DATABASE
要验证本地数据库别名是否已删除,可以使用 SHOW DATABASES 命令。已删除的别名将不再出现在 aliases 列中。
SHOW DATABASE `northwind-graph-2021`
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | name | type | aliases | access | address | role | writer | requestedStatus | currentStatus | statusMessage | default | home | constituents | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | "northwind-graph-2021" | "standard" | [] | "read-write" | "localhost:7687" | "primary" | TRUE | "online" | "online" | "" | FALSE | FALSE | [] | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
删除远程数据库别名
您可以使用 DROP ALIAS 命令删除远程数据库别名。例如:
DROP ALIAS `remote-northwind` FOR DATABASE
要验证远程数据库别名是否已删除,可以使用 SHOW ALIASES FOR DATABASE 命令。
SHOW ALIASES `remote-northwind` FOR DATABASE
+-------------------------------------------------------------------+ | name | composite | database | location | url | credentials | user | +-------------------------------------------------------------------+ +-------------------------------------------------------------------+