Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

CREATE USER

创建一个新的数据库用户账户。您必须是数据库超级用户才能执行此命令。

语法

Copy
CREATE USER name [ [ WITH] option [ ... ] ] where option can be: CREATEDB | NOCREATEDB | CREATEUSER | NOCREATEUSER | IN GROUP groupname [, ... ] | PASSWORD { 'password' | 'md5hash' } | VALID UNTIL 'abstime' | CONNECTION LIMIT { limit | UNLIMITED }

参数

name

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

CREATEDB | NOCREATEDB

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

CREATEUSER | NOCREATEUSER

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

IN GROUP groupname

指定用户所属的现有组的名称。可列出多个组名。

PASSWORD { 'password' | 'md5hash' }

设置用户的密码。

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

注意

当使用 AWS 管理控制台、AWS CLI 或 Amazon Redshift API 启动新集群时,您必须为主数据库用户提供一个明文密码。您稍后可以使用 ALTER USER 更改密码。

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

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

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

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

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

注意

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

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

  1. 联接密码和用户名。

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

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

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

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

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

VALID UNTIL abstime

VALID UNTIL 选项设置一个绝对时间,用户账户密码在该时间后将不再有效。默认情况下,密码没有时间限制。

CONNECTION LIMIT { limit | UNLIMITED }

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

注意

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

使用说明

默认情况下,所有用户都对 PUBLIC schema 具有 CREATE 和 USAGE 权限。要禁止用户在数据库的 PUBLIC schema 中创建对象,请使用 REVOKE 命令删除该权限。

示例

以下命令创建名为 dbuser 的用户账户,密码为“abcD1234”,具有数据库连接权限,连接限制为 30。

Copy
create user dbuser with password 'abcD1234' createdb connection limit 30;

查询 PG_USER_INFO 目录表,查看有关数据库用户的详细信息。

Copy
select * from pg_user_info; usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig | useconnlimit -----------+----------+-------------+----------+-----------+----------+----------+-----------+------------- rdsdb | 1 | true | true | true | ******** | infinity | | adminuser | 100 | true | true | false | ******** | | | UNLIMITED danny | 102 | true | false | false | ******** | | | 30

在以下示例中,账户密码在 2017 年 6 月 10 日前有效。

Copy
create user dbuser with password 'abcD1234' valid until '2017-06-10';

以下示例创建一个具有包含特殊字符的区分大小写的密码的用户。

Copy
create user newman with password '@AbC4321!';

要在 MD5 密码中使用一个反斜线 (“\”),请在源字符串中用另一个反斜杠对该反斜杠进行转义。以下示例创建一个名为 slashpass 的用户并使用一个反斜杠(“\”)作为密码。

Copy
select md5('\\'||'slashpass'); md5 -------------------------------- 0c983d1a624280812631c5389e60d48c create user slashpass password 'md50c983d1a624280812631c5389e60d48c';

本页内容: