交互式分析(Interactive Analytics)和阿里云账号体系深度集成,其数据库角色可以是一个阿里云账号(例如abc@aliyun.com)或者子账号(例如RAM$abc@aliyun.com:subuser1),也可以是一个自己命名的用户组(例如,developer)。本小节将会为您介绍在交互式分析(Interactive Analytics)中阿里云账号体系的一些常见概念。

  • 用户显示名称

    例如abc@aliyun.com或者RAM$abcaliyun.com:subuser1

    说明
    1. 如果是阿里云主账号,则其格式为"abc@aliyun.com"或者"ALIYUN$abc@aliyun.com"(两者等价)。在某些情况下,阿里云账号系统允许创建非email格式的主账号,例如user1,但是必须加上ALIYUN$前缀标识,即ALIYUN$user1
    2. 如果是阿里云子账户,子账户的显示名称格式为以下两种之一:
      • RAM$主账号显示名称:子账号名称。这里主账号显示名称的格式为前面所述,但不带ALIYUN$前缀。例如,RAM$abc@aliyun.com:subuser1就是一个子账号显示名称,其中主账号是abc@aliyun.com,子账号是subuser1
      • RAM$主账号Account ID:子账号名称。例如RAM$1898137152164646:subuser1就是一个子账号显示名称,其中主账号的Account ID是1898137152164646,子账号是subuser1

    CREATE/ALTER/DROP ROLE/USER或者GRANT/REVOKE等操作要用到阿里云账号时,必须以用户的显示名称来指定。

  • 用户Account ID

    格式为一串数字,例如1898137152164646。这个是每个用户的唯一标识,一旦确定就不可修改。

    交互式分析(Interactive Analytics)使用阿里云用户的Account ID作为角色名称。但在对各种角色的操作时,命令中可使用用户显示名称来表示角色。交互式分析(Interactive Analytics)会自动将显示名称转换成用户Account ID。

    例如,为一个阿里云子账号创建同名的交互式分析(Interactive Analytics)角色,需要执行以下命令:
    CREATE USER "RAM$abc@aliyun.com:subuser1";
    说明
    1. 因为阿里云账号名字包含$@等符号,必须用双引号包围。
    2. 这个阿里云账号必须是阿里云账号体系中已存在的账号。对于一个用户来说,要访问交互式分析(Interactive Analytics),必须在阿里云账号体系中为其创建一个阿里云账号,然后在交互式分析(Interactive Analytics)中为其CREATE USER
    3. 交互式分析(Interactive Analytics)依赖于阿里云账号体系进行用户认证,所以在交互式分析(Interactive Analytics)中不需要为角色设置密码,认证由阿里云账号体系完成。
    4. 如果在交互式分析(Interactive Analytics)中创建一个可登录(LOGIN)的角色,但角色名并不是一个合法的阿里云用户名,那么这个角色是无法登录的(因为该用户无法通过阿里云认证)。
    5. 其他不可登录的交互式分析(Interactive Analytics)角色并不需要是阿里云账号。
  • Access ID/Access Key

    这是阿里云颁发的访问凭证,会定期变化。

    对于一个用户来说,访问交互式分析(Interactive Analytics)时,必须要先获得其阿里云账号的:Access ID和Access Key

    在获得Access ID和Access Key后,将Access ID作为用户名,将Access Key作为密码来连接交互式分析(Interactive Analytics)。例如,使用psql访问时:

    PGPASSWORD=<access key> psql -U <access id> ...

    在成功连接交互式分析后,交互式分析会自动从Access ID/Access Key中识别出用户及其Account ID。输入SQL命令:

    SELECT current_user;

    返回结果为一串数字,例如1898137152164646,即为该用户的ID。

    要获得此用户的阿里云显示名称,需要使用函数user_display_name。执行SQL命令如下:

    SELECT user_display_name(current_user);

    返回结果为当前用户名称,例如:RAM$abc@aliyun.com:subuser1

    获得当前交互式分析(Interactive Analytics)中的所有角色,执行SQL命令如下:

    SELECT user_display_name(rolname) FROM pg_roles;