ALTER USER - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

ALTER USER

更改数据库用户账户。如果您是当前用户,则可更改自己的密码。对于所有其他选项,您必须是数据库超级用户才能执行此命令。

Syntax

ALTER USER username [ WITH ] option [, ... ] where option is CREATEDB | NOCREATEDB | CREATEUSER | NOCREATEUSER | SYSLOG ACCESS { RESTRICTED | UNRESTRICTED } | PASSWORD { 'password' | 'md5hash' | DISABLE } [ VALID UNTIL 'expiration_date' ] | RENAME TO new_name | | CONNECTION LIMIT { limit | UNLIMITED } | SESSION TIMEOUT { limit } | SET parameter { TO | = } { value | DEFAULT } | RESET parameter

Parameters

username

用户账户的名称。

WITH

可选关键字。

CREATEDB | NOCREATEDB

CREATEDB 选项允许用户创建新数据库。NOCREATEDB 是默认值。

CREATEUSER | NOCREATEUSER

使用 CREATEUSER 选项可以创建具备所有数据库权限的超级用户,包括 CREATE USER。默认值为 NOCREATEUSER。有关更多信息,请参阅superuser

SYSLOG ACCESS { RESTRICTED | UNRESTRICTED }

一个子句,它指定用户必须对 Amazon Redshift 系统表和视图具有的访问级别。

如果指定 RESTRICTED,则用户在用户可见的系统表和视图中只能查看该用户生成的行。默认值为 RESTRICTED。

如果指定 UNRESTRICTED,则用户可以在用户可见的系统表和视图中查看所有行,包括其他用户生成的行。UNRESTRICTED 不向普通用户授予对超级用户可见的表的访问权限。只有超级用户可以查看超级用户可见的表。

注意

如果向用户授予对系统表的无限制访问权限,用户便可以看到由其他用户生成的数据。例如,STL_QUERY 和 STL_QUERYTEXT 包含 INSERT、UPDATE 和 DELETE 语句的完整文本(其中可能包含敏感的用户生成数据)。

SVV_TRANSACTIONS 中的所有行都对所有用户可见。

有关更多信息,请参阅系统表和视图中的数据可见性

PASSWORD { 'password' | 'md5hash' | DISABLE }

设置用户的密码。

默认情况下,用户可以更改自己的密码,除非密码被禁用。要禁用用户的密码,请指定 DISABLE。禁用某个用户的密码后,将从系统中删除该密码,而此用户只能使用临时 Amazon Identity and Access Management (IAM) 用户凭证进行登录。有关更多信息,请参阅使用 IAM 身份验证生成数据库用户凭证。只有超级用户才能启用或禁用密码。您不能禁用超级用户的密码。要启用密码,请运行 ALTER USER 并指定密码。

您可采用明文或 MD5 哈希字符串的形式指定密码。

对于明文,密码必须遵循以下约束:

  • 它的长度必须介于 8 到 64 个字符之间。

  • 它必须包含至少一个大写字母、一个小写字母和一个数字。

  • 它可以使用带有 ASCII 代码 33–126 的任何 ASCII 字符,但 '(单引号)、"(双引号)、\、/ 或 @ 除外。

作为以明文形式传递 CREATE USER 密码参数的更安全的替代方法,您可以指定包含密码和用户名的 MD5 哈希。

注意

当您指定 MD5 哈希字符串时,ALTER USER 命令将检查是否存在有效的 MD5 哈希字符串,但它不会验证字符串的密码部分。在这种情况下,可以创建无法用于登录数据库的密码(如空字符串)。

要指定 MD5 密码,请执行以下步骤:

  1. 联接密码和用户名。

    例如,对于密码 ez 和用户 user1,联接后的字符串为 ezuser1

  2. 将联接后的字符串转换为 32 字符 MD5 哈希字符串。您可以使用任何 MD5 实用工具创建哈希字符串。以下示例使用 Amazon Redshift MD5 函数 和联接运算符 (||) 返回 32 字符的 MD5 哈希字符串。

    select md5('ez' || 'user1'); md5 -------------------------------- 153c434b4b77c89e6b94f12c5393af5b
  3. 在 MD5 哈希字符串前面联接“md5”并提供联接后的字符串作为 md5hash 参数。

    create user user1 password 'md5153c434b4b77c89e6b94f12c5393af5b';
  4. 使用用户名和密码登录数据库。

    对于此示例,请使用密码 user1ez 的身份登录。

VALID UNTIL 'expiration_date'

指定密码具有过期日期。使用值 'infinity' 可避免密码具有过期日期。此参数的有效数据类型为时间戳。

RENAME TO

重命名用户账户。

new_name

用户的新名称。有关有效名称的更多信息,请参阅名称和标识符

重要

在重命名用户时,您还必须更改用户的密码。用户名用作密码加密的一部分,因此在重命名用户时,将会清除密码。用户将无法登录,直至重置密码。例如:

alter user newuser password 'EXAMPLENewPassword11';
CONNECTION LIMIT { limit | UNLIMITED }

允许用户同时打开的数据库连接的最大数量。此限制不适用于超级用户。使用 UNLIMITED 关键字设置允许的并行连接的最大数量。对每个数据库的连接数量可能也会施加限制。有关更多信息,请参阅CREATE DATABASE。默认为 UNLIMITED。要查看当前连接,请查询 STV_SESSIONS 系统视图。

注意

如果用户及数据库连接限制均适用,当用户尝试连接时,必须有一个同时低于这两个限制的未使用的连接槽可用。

SESSION TIMEOUT { limit }

会话保持非活动或空闲状态的最长时间(秒)。0 表示未设置超时。如果没有为用户设置会话超时,则应用集群设置。想要了解有关信息,请参阅 Amazon Redshift 集群管理指南中的 Amazon Redshift 中的配额和限制

设置会话超时时,它仅应用于新会话。

要查看有关活动用户会话的信息,包括开始时间、用户名和会话超时,请查询 STV_SESSIONS 系统视图。要查看有关用户会话历史记录的信息,请查询 STL_SESSIONS 视图。要检索有关数据库用户的信息(包括会话超时值),请查询 SVL_USER_INFO 视图。

SET

针对指定用户运行的所有会话,将某个配置参数设置为新的默认值。

RESET

为指定用户将某个配置参数重置为原始默认值。

parameter

要设置或重置的参数的名称。

参数的新值。

DEFAULT

针对指定用户运行的所有会话,将配置参数设置为默认值。

使用说明

使用 Amazon Identity and Access Management (IAM) 身份验证创建数据库用户凭证时,您可能希望创建能够仅使用临时凭证登录的超级用户。您不能禁用超级用户的密码,但可以使用随机生成的 MD5 哈希字符串创建一个未知密码。

alter user iam_superuser password 'mdA51234567890123456780123456789012';

当您使用 ALTER USER 命令设置 search_path 参数时,所做修改将在指定的用户下次登录时生效。如果您希望更改当前用户和会话的 search_path 值,请使用 SET 命令。

Examples

以下示例为用户 ADMIN 授予创建数据库的权限:

alter user admin createdb;

以下示例将用户 ADMIN 的密码设置为 adminPass9,并为密码设置一个到期日期和时间:

alter user admin password 'adminPass9' valid until '2017-12-31 23:59';

以下示例将用户 ADMIN 重命名为 SYSADMIN:

alter user admin rename to sysadmin;

以下示例将用户的空闲会话超时更新为 300 秒。

ALTER USER dbuser SESSION TIMEOUT 300;

重置用户的空闲会话超时。重置它时,将应用集群设置。您必须是数据库超级用户才能执行此命令。有关更多信息,请参阅 Amazon Redshift 集群管理指南中的 Amazon Redshift 中的配额和限制

ALTER USER dbuser RESET SESSION TIMEOUT;