Hologres和阿里云账号体系深度集成,Hologres的可登录角色是通过阿里云来进行用户认证的。在Hologres中,数据库角色可以是一个阿里云账号(例如abc@aliyun.com)或者子账号(例如[email protected]com:subuser1),也可以是一个自己命名的用户组(例如developer)。本文将会为您介绍在Hologres中使用到的阿里云账号体系。

用户显示名称

在Hologres中用户的显示名称通常为:主账号[email protected]或者子账号RAM$abcaliyun.com:subuser1,具体的说明如下:

阿里云2000元代金券免费领,最新优惠1折抢购,2核4G云服务器仅799元/3年,新老用户同享,立即抢购>>>

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

在Hologres中为用户授权如CREATE/ALTER/DROP ROLE/USER等操作时,可以以用户的显示名称来操作。

例如,为一个阿里云子账号创建同名的Hologres角色,需要执行以下命令:

CREATE USER "[email protected]:subuser1";
说明

  1. 因为阿里云账号名字包含[email protected]等符号,必须用双引号包围。
  2. 这个阿里云账号必须是阿里云账号体系中已存在的账号。对于一个用户来说,要访问Hologres,必须在阿里云账号体系中为其创建一个阿里云账号,然后在Hologres中为其CREATE USER
  3. Hologres依赖于阿里云账号体系进行用户认证,所以在Hologres中不需要为角色设置密码,认证由阿里云账号体系完成。
  4. 如果在Hologres中创建一个可登录(LOGIN)的角色,但角色名并不是一个合法的阿里云用户名,那么这个角色是无法登录的(因为该用户无法通过阿里云认证)。
  5. 其他不可登录的Hologres角色并不需要是阿里云账号。

可以在Hologres中使用以下命令查看当前账号的用户显示名称。

SELECT user_display_name(current_user);

Account ID

Account ID又名账号ID,是一串数字,例如主账号189813715xxxx,在阿里云官网的用户信息页面可以查看。

阿里云账号认证_用户授权及角色管理_交互式分析Hologres

子账号的Account ID为对应子账号的UID,可以在访问控制页面的用户页面查看。在Hologres中,要使用子账号UID为其授权时必须用“p4_UID”的写法,例如“p4_12333388xxx“。

阿里云账号认证_用户授权及角色管理_交互式分析Hologres

在Hologres可以使用Account ID为用户授权,示例如下:

create USER "189813715xxxx"; //将主账号189813715xxxx创建进Hologres create USER "p4_12333388xxx" superuser;//将子账号12333388xxx授权成实例的superuser

可以在Hologres中执行以下语句查看当前账号的Account ID。

SELECT current_user;

Access ID/Access Key

阿里云Access ID和Access key用于连接访问Hologres实例。Access ID类似登录账号,Access Key类似登录密码,可以在阿里云官网Access Key管理查看。这是阿里云颁发的访问凭证,会过期。可以参见账号准备进行创建。

示例使用psql访问Hologres实例,连接串如下:

PGUSER=<AccessID> PGPASSWORD=<AccessKey> psql -p <Port> -h <Endpoint> -d <Database>