

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# SHOW DATABASES
<a name="r_SHOW_DATABASES"></a>

显示来自 Data Catalog 或 Amazon Redshift 数据仓库的数据库。SHOW DATABASES 列出了所有可访问的数据库，例如数据仓库中的 AWS Glue Data Catalog 数据库（awsdatacatalog）、数据共享数据库和 Lake Formation 数据库。

## 所需的权限
<a name="r_SHOW_DATABASES-privileges"></a>

用户可以看到所有数据库，但以下数据库除外：
+ 对于从数据共享创建的具有可见权限的数据库，必须向当前用户授予对该数据库的 USAGE 权限。

## 语法
<a name="r_SHOW_DATABASES-syntax"></a>

要显示来自 Amazon Redshift 数据仓库的数据库，请执行以下操作：

```
SHOW DATABASES 
[ LIKE '<expression>' ]
[ LIMIT row_limit ]
```

要显示 Data Catalog 中的数据库，请执行以下操作：

```
SHOW DATABASES FROM DATA CATALOG 
[ ACCOUNT  '<id1>', '<id2>', ... ]
[ LIKE '<expression>' ]
[ IAM_ROLE default | 'SESSION' | 'arn:aws:iam::<account-id>:role/<role-name>' ]
[ LIMIT row_limit ]
```

## 参数
<a name="r_SHOW_DATABASES-parameters"></a>

ACCOUNT '<id1>', '<id2>', ...  
要从中列出数据库的 AWS Glue Data Catalog 账户。省略此参数将指示 Amazon Redshift 应显示拥有该集群的账户中的数据库。

LIKE '<expression>'  
从数据库列表中筛选出那些与您指定的表达式匹配的数据库。此参数支持使用通配符 %（百分号）和 \$1（下划线）的模式。

IAM\$1ROLE default \$1 'SESSION' \$1 'arn:aws:iam::<account-id>:role/<role-name>'  
如果您在运行 SHOW DATABASES 命令时指定与集群关联的 IAM 角色，则 Amazon Redshift 将在您对数据库运行查询时使用该角色的凭证。  
指定 `default` 关键字表示要使用设置为默认并与集群关联的 IAM 角色。  
如果您使用联合身份连接到 Amazon Redshift 集群并访问使用 [CREATE DATABASE](r_CREATE_DATABASE.md) 命令创建的外部数据库中的表，则使用 `'SESSION'`。有关使用联合身份的示例，请参阅[使用联合身份管理 Amazon Redshift 对本地资源和 Amazon Redshift Spectrum 外部表的访问权限](https://docs.aws.amazon.com/redshift/latest/mgmt/authorization-fas-spectrum.html)，其中说明了如何配置联合身份。  
使用 IAM 角色的 Amazon 资源名称（ARN），您的集群使用该角色进行身份验证和授权。IAM 角色至少必须有权在要访问的 Amazon S3 桶上执行 LIST 操作和有权在该桶包含的 Amazon S3 对象上执行 GET 操作。要了解有关从 AWS Glue Data Catalog 中为数据共享创建并使用 IAM\$1ROLE 的数据库的更多信息，请参阅[以使用者身份使用 Lake Formation 托管式数据共享](https://docs.aws.amazon.com/redshift/latest/dg/lake-formation-getting-started-consumer.html)。  
下面显示了单个 ARN 的 IAM\$1ROLE 参数字符串的语法。  

```
IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-name>'
```
您可以将角色串联起来，以便集群可以承担另一个 IAM 角色 (可能属于其他账户)。您最多可串联 10 个角色。有关更多信息，请参阅 [在 Amazon Redshift Spectrum 中链接 IAM 角色](c-spectrum-iam-policies.md#c-spectrum-chaining-roles)。  
 对于此 IAM 角色，请附加类似于以下内容的 IAM 权限策略。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AccessSecret",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetResourcePolicy",
                "secretsmanager:GetSecretValue",
                "secretsmanager:DescribeSecret",
                "secretsmanager:ListSecretVersionIds"
            ],
            "Resource": "arn:aws:secretsmanager:us-west-2:123456789012:secret:my-rds-secret-VNenFy"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetRandomPassword",
                "secretsmanager:ListSecrets"
            ],
            "Resource": "*"
        }
    ]
}
```
有关创建 IAM 角色以用于联合查询的步骤，请参阅[创建密钥和 IAM 角色以使用联合查询](federated-create-secret-iam-role.md)。  
请不要在链接的角色列表中包含空格。
下面显示了串联三个角色的语法。  

```
IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-1-name>,arn:aws:iam::<aws-account-id>:role/<role-2-name>,arn:aws:iam::<aws-account-id>:role/<role-3-name>'
```

LIMIT *row\$1limit*  
LIMIT 返回的行数的子句。其中 *row\$1limit* 是要返回的最大行数。*row\$1limit* 可以是 0–10000。

## 示例
<a name="r_SHOW_DATABASES-examples"></a>

以下示例显示了来自账户 ID 123456789012 的所有 Data Catalog 数据库。

```
SHOW DATABASES FROM DATA CATALOG ACCOUNT '123456789012'

  catalog_id  | database_name |                        database_arn                    |     type     |                                             target_database                                      | location | parameters
--------------+---------------+--------------------------------------------------------+--------------+--------------------------------------------------------------------------------------------------+----------+------------
 123456789012 |   database1   | arn:aws:glue:us-east-1:123456789012:database/database1 | Data Catalog |                                                                                                  |          |
 123456789012 |   database2   | arn:aws:glue:us-east-1:123456789012:database/database2 | Data Catalog | arn:aws:redshift:us-east-1:123456789012:datashare:035c45ea-61ce-86f0-8b75-19ac6102c3b7/database2 |          |
```

以下示例演示了如何在使用 IAM 角色的凭证时显示账户 ID 123456789012 中的所有数据目录数据库。

```
SHOW DATABASES FROM DATA CATALOG ACCOUNT '123456789012' IAM_ROLE default;
```

```
SHOW DATABASES FROM DATA CATALOG ACCOUNT '123456789012' IAM_ROLE <iam-role-arn>;
```

以下示例显示了所连接的 Amazon Redshift 数据仓库中的所有数据库。

```
SHOW DATABASES

database_name  | database_owner | database_type        | database_acl | parameters | database_isolation_level
---------------+----------------+----------------------+--------------+------------+--------------------
awsdatacatalog | 1              | auto mounted catalog | NULL         | UNKNOWN    | UNKNOWN
dev            | 1              | local                | NULL         | NULL       | Snapshot Isolation
```