ALTER USER

更改用户帐户参数和用户级别配置参数。

语法

ALTER USER user‑name {
   account‑parameter value[,...]
   | SET [PARAMETER] cfg‑parameter=value[,...]
   | CLEAR [PARAMETER] cfg‑parameter[,...]
}

参数

user‑name
用户名。包含特殊字符的名称必须加上双引号。要强制区分大小写,请使用双引号。

有关名称要求的详细信息,请参阅创建数据库名称和密码

account‑parameter value
指定用户帐户设置(见下文)。
SET [PARAMETER]
设置指定的配置参数。新设置仅适用于当前会话,以及该用户启动的所有后续会话。并发用户会话不受新设置的影响,除非它们调用元函数 RESET_SESSION
CLEAR [PARAMETER]
将指定的配置参数重置为其默认值。

用户帐户参数

以逗号分隔列表的形式指定一个或多个用户帐户参数及其设置:

account‑parameter value[,...]

参数

设置

ACCOUNT

锁定或解锁用户对数据库的访问,可以用以下操作之一:

  • UNLOCK (默认值)

  • LOCK 可使新用户无法登录,在为不需要直接访问权限的用户创建帐户时十分有用。

DEFAULT ROLE

指定哪些角色是此用户的默认角色,设置为以下之一:

  • NONE (默认值):删除所有默认角色。

  • ALL:将所有用户角色设置为默认值。

当用户登录时,会自动激活默认角色。此参数指定的角色将取代之前分配的任何角色。

GRACEPERIOD

指定用户查询可以被任何会话套接字拦截多长时间,可以是以下值之一:

  • NONE (默认值):移除先前对会话查询设置的任何宽限期。

  • 'interval':将当前会话查询的最长宽限期指定为间隔,最长 20 天。

有关详细信息,请参阅处理会话套接字阻止

IDENTIFIED BY

更改用户密码:

IDENTIFIED BY '[new-password]'

['hashed-password' SALT 'hash-salt'] [REPLACE 'current-password']

  • new-password:Vertica 随后将进行哈希处理以用于内部存储的 ASCII 密码。如果为空字符串,则该用户无需密码即可访问数据库。

  • hashed-password: 经过预哈希处理的密码及其关联的十六进制字符串 hash-salt。以这种方式设置密码会绕过所有密码复杂性要求

  • REPLACE:对于必须提供当前密码的非超级用户来说,为必需选项。非超级用户只能更改自己的密码。

有关详细信息,请参阅“密码指导原则”和“创建数据库名称和密码”。

IDLESESSIONTIMEOUT

系统在断开空闲会话之前所等待的时间长度,可以为以下值之一:

  • NONE (默认值):未对此用户设置限制。如果省略此参数,则不会对此用户设置限制。

  • 'interval':一个时间间隔值,最长为一年。

有关详细信息,请参阅管理客户端连接

MAXCONNECTIONS

设置用户可以与服务器建立的最大连接数,可以为以下值之一:

  • NONE (默认值):没有设置限制。如果省略此参数,则用户可以在数据库群集中拥有无限数量的连接。

  • integer ON DATABASE:设置为 integer,跨数据库群集的最大连接数。

  • integer ON NODE:设置为 integer,到每个节点的最大连接数。

有关详细信息,请参阅管理客户端连接

MEMORYCAP

设置可以为用户请求分配的内存量,可以为下之值一:

  • NONE (默认值):没有限制

  • 一个字符串值,用于指定内存限制,为以下几项之一:

    • ' int%' 将最大值表示为资源管理器可用总内存的百分比到,其中 int 是 0 到 100 之间的整数值。例如:

      MEMORYCAP '40%'

    • 'int{K|M|G|T}' 表示内存分配(以千字节、兆字节、千兆字节或太字节为单位)。例如:

      MEMORYCAP '10G'

PASSWORD EXPIRE

强制用户密码立即到期。用户必须在下次登录时更改密码。

PROFILE

分配一个配置文件来控制此用户的密码要求,可以为以下值之一:

  • DEFAULT (默认值):将默认数据库配置文件分配给该用户。

  • profile-name:该配置文件由 CREATE PROFILE 定义。

RENAME TO

为用户分配新的用户名。分配给用户的所有权限保持不变。

RESOURCE POOL 将默认资源池文件分配给该用户。还必须对用户授予此池的权限,除非该池的权限设置为 PUBLIC
RUNTIMECAP

设置此用户的查询可以执行多长时间,可以为以下值之一:

  • NONE (默认值):未对此用户设置限制。如果省略此参数,则不会对此用户设置限制。

  • 'interval':一个时间间隔值,最长为一年。

查询的运行时限制可以在三个级别设置:用户的运行时限制、用户的资源池和会话设置。有关详细信息,请参阅为查询设置运行时限制

SEARCH_PATH

指定用户默认搜索路径,此路径会指示 Vertica 在哪个架构中搜索引用的未限定表和 UDF,可以是以下值之一:

  • DEFAULT (默认值):按如下方式设置搜索路径:

    "$user", public, v_catalog, v_monitor, v_internal
    
  • 以逗号分隔的架构列表。

有关详细信息,请参阅设置搜索路径

SECURITY_ALGORITHM 'algorithm'

设置哈希身份验证的用户级别安全算法,其中 algorithm 为以下之一:

  • NONE (默认值):使用系统级别参数, SecurityAlgorithm

  • SHA512

  • MD5

当您更改 SECURITY_ALGORITHM 值时,用户密码将会过期,因此必须重置密码。

TEMPSPACECAP

设置用户请求可用的临时文件存储量,可以为下之值一:

  • NONE (默认值):没有限制

  • 指定存储限制的字符串值,可以为下之值一:

    • int% 将最大值表示为资源管理器可用的临时总存储的百分比,其中 int 为 0 至 100 之间的整数值。例如:

      TEMPSPACECAP '40%'

    • int{K|M|G|T} 以 KB、MB、GB 或 TB 表示存储分配。例如:

      TEMPSPACECAP '10G'

特权

非超级用户可以在自己的用户帐户上更改以下选项:

  • IDENTIFIED BY

  • RESOURCE POOL

  • SEARCH_PATH

  • SECURITY_ALGORITHM

将另一个用户的默认资源池更改为 PUBLIC 架构之外的资源池时,用户必须至少通过以下途径之一获得资源池的 USAGE 权限:

设置用户级别配置参数

SET | CLEAR PARAMETER 只能指定用户级别配置参数,否则 Vertica 将返回错误。只有超级用户可以设置和清除用户级别参数,除非它们在会话级也受支持。

要获取用户级别参数的名称,请查询系统表 CONFIGURATION_PARAMETERS。例如:

=> SELECT parameter_name, allowed_levels FROM configuration_parameters
      WHERE allowed_levels ilike '%USER%' AND parameter_name ilike '%depot%' ORDER BY parameter_name;
       parameter_name        |     allowed_levels
-----------------------------+-------------------------
 BackgroundDepotWarming      | SESSION, USER, DATABASE
 DepotOperationsForQuery     | SESSION, USER, DATABASE
 EnableDepotWarmingFromPeers | SESSION, USER, DATABASE
 UseDepotForReads            | SESSION, USER, DATABASE
 UseDepotForWrites           | SESSION, USER, DATABASE
(5 rows)

以下示例为两个用户 Yvonne 和 Ahmed 设置用户级别配置参数 UseDepotForWrites:

=> SHOW USER Yvonne PARAMETER ALL;
  user  |        parameter        | setting
--------+-------------------------+---------
 Yvonne | DepotOperationsForQuery | Fetches
(1 row)

=> ALTER USER Yvonne SET PARAMETER UseDepotForWrites = 0;
ALTER USER
=> SHOW USER Yvonne PARAMETER ALL;
  user  |        parameter        | setting
--------+-------------------------+---------
 Yvonne | DepotOperationsForQuery | Fetches
 Yvonne | UseDepotForWrites       | 0
(2 rows)

=> ALTER USER Ahmed SET PARAMETER DepotOperationsForQuery = 'Fetches';
ALTER USER
=> SHOW USER ALL PARAMETER ALL;
  user  |        parameter        | setting
--------+-------------------------+---------
 Ahmed  | DepotOperationsForQuery | Fetches
 Yvonne | DepotOperationsForQuery | Fetches
 Yvonne | UseDepotForWrites       | 0
(3 rows)

示例

设置用户密码

=> CREATE USER user1;
=> ALTER USER user1 IDENTIFIED BY 'newpassword';

设置用户的安全算法和密码

此示例将用户的安全算法和密码分别设置为 SHA-512newpassword。执行 ALTER USER 语句时,Vertica 会使用 SHA-512 算法对密码进行哈希处理,并保存哈希:

=> CREATE USER user1;
        => ALTER USER user1 SECURITY_ALGORITHM 'SHA512' IDENTIFIED BY 'newpassword'

为用户分配默认角色

此示例使用户的已分配角色成为用户的默认角色。用户登录时会自动设置(启用)默认角色:

=> CREATE USER user1;
CREATE USER
=> GRANT role1, role2, role3 to user1;
=> ALTER USER user1 DEFAULT ROLE ALL;

您可以将 ALL 与 EXCEPT 配对以排除某些角色:

=> CREATE USER user2;
CREATE USER
=> GRANT role1, role2, role3 to user2;
=> ALTER USER user2 DEFAULT ROLE ALL EXCEPT role1;

另请参阅