Todos os produtos
Search
Central de documentação

Hologres:Funções do SLPM

Última atualização: Jun 28, 2026

O Hologres oferece oito funções armazenadas para gerenciar o modelo de permissão no nível de schema (SLPM). Use essas funções para ativar, configurar e limpar o controle de acesso baseado em SLPM nos seus bancos de dados.

Visão geral das funções

Função

Finalidade

Permissão necessária

slpm_enable

Ativa o SLPM para um banco de dados

Superuser

slpm_migrate

Migra objetos existentes para o SLPM

slpm_create_user

Crie um usuário no SLPM

Superuser ou membro de {db}.admin

slpm_grant

Adiciona um usuário a um grupo de usuários

Superuser ou membro de {db}.admin

slpm_revoke

Remove um usuário de um grupo de usuários

Superuser ou membro de {db}.admin

slpm_disable

Desativa o SLPM para um banco de dados

Superuser

slpm_cleanup

Exclua os grupos de usuários retidos após a desativação

Superuser

slpm_rename_schema

Renomeia um schema e seus grupos de usuários associados

Superuser ou membro de {db}.admin

Fluxos de trabalho típicos

Configuração inicial

  1. Chame slpm_enable para ative o SLPM. O sistema cria quatro grupos de usuários automaticamente.

  2. Execute slpm_migrate para transferir a propriedade de objetos existentes (tabelas, visualizações, tabelas externas) para o SLPM.

  3. Use slpm_create_user ou slpm_grant para atribuir usuários aos grupos.

Gerenciamento contínuo de usuários

  • Use slpm_grant para adicionar um usuário a um grupo.

  • Use slpm_revoke para remover um usuário de um grupo.

Descomissionamento de banco de dados

  1. Chame slpm_disable para desativar o SLPM. Os grupos de usuários são mantidos.

  2. Chame slpm_cleanup para exclua os grupos de usuários retidos.

slpm_enable

Ative o SLPM para o banco de dados atual. Após a ativação, o sistema cria automaticamente os seguintes grupos de usuários: {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer e {db}.{schema}.viewer.

Pré-requisitos

Requisito

Detalhes

Permissão

Ser superuser da instância do Hologres

Sintaxe

CALL slpm_enable ();

Alterações de permissão após a ativação

Assunto

Antes da ativação

Após a ativação

Grupo PUBLIC

Possui permissões no banco de dados e em todos os schemas

Todas as permissões revogadas — usuários não autorizados não podem se conectar

{db}.admin

Torna-se proprietário do banco de dados e de todos os schemas; pode se conectar ao banco de dados

{db}.{schema}.developer, writer, viewer

Obtêm permissão USAGE no schema; podem se conectar ao banco de dados

{db}.{schema}.developer

Recebe permissão CREATE no schema

Objetos criados dentro de um schema

{db}.{schema}.developer = proprietário; writer = leitura/escrita; viewer = somente leitura

Objetos sem schema (servidores externos, wrappers de dados externos, linguagens)

{db}.admin = proprietário; developer, writer, viewer obtêm permissão USAGE

slpm_migrate

Migra objetos existentes — tabelas, visualizações e tabelas externas — para o SLPM. Se o banco de dados tiver muitos objetos, chame esta função várias vezes até migrar todos eles.

Sintaxe

CALL slpm_migrate ( [ batch_size ] );

Parâmetros

Parâmetro

Descrição

Intervalo de valores

batch_size

Número máximo de objetos a migrar por chamada. Defina como 0 para usar o valor do parâmetro max_locks_per_transaction.

[1, 64]. Valores fora deste intervalo são inválidos.

Para bancos de dados com milhares ou dezenas de milhares de objetos, entre em contato com o suporte técnico para aumentar o max_locks_per_transaction antes de iniciar a migração.

Mensagens de retorno

Mensagem

Significado

DONE BUT NOT COMPLETED

Alguns objetos permanecem. Chame slpm_migrate novamente.

COMPLETED

Todos os objetos foram migrados.

Exemplos

-- Migrate objects using the limit set by max_locks_per_transaction
CALL slpm_migrate ();

-- Migrate up to 64 objects per call
CALL slpm_migrate (64);

slpm_create_user

Crie um usuário no SLPM. Após a criação, o usuário tem apenas permissão de logon. Para permitir análises de dados, adicione o usuário a um grupo usando slpm_grant ou especifique role_name diretamente nesta chamada.

Pré-requisitos

Requisito

Detalhes

Permissão

Superuser ou membro do grupo {db}.admin

Sintaxe

CALL slpm_create_user ( user_name [, role_name] );

Parâmetros

Parâmetro

Descrição

user_name

Usuário a criar. Formatos aceitos: ID da conta Alibaba Cloud (ex.: 13432193xxxx), nome de exibição da conta (ex.: x*@aliyun.com), UID de usuário RAM com prefixo p4_ (ex.: p4_202338382183xxx) ou nome de exibição de usuário RAM (ex.: RAM$mainaccount:subuser).

role_name

(Opcional) Grupo ao qual adicionar o usuário: {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer ou {db}.{schema}.viewer. Para permissões de grupo, consulte Grupos de usuários e permissões no SLPM.

Exemplos

-- Create a user by Alibaba Cloud account display name (no group assigned)
CALL slpm_create_user ('my_t***@aliyun.com');

-- Create a RAM user and add them to the mydb.public.developer group
CALL slpm_create_user ('RAM$my_test:mysubuser', 'mydb.public.developer');

-- Create a user by Alibaba Cloud account ID
CALL slpm_create_user ('13532313103042xxx');

-- Create a RAM user by UID and add them to the mydb.admin group
CALL slpm_create_user ('p4_23319103042xxx', 'mydb.admin');

slpm_grant

Adiciona um usuário a um grupo de usuários no banco de dados atual.

Pré-requisitos

Requisito

Detalhes

Permissão

Superuser ou membro do grupo {db}.admin

Status do SLPM

Deve estar ativado

Escopo

Adiciona usuários a grupos apenas no banco de dados atual

Sintaxe

CALL slpm_grant ( role_name, user_name );

Parâmetros

Parâmetro

Descrição

role_name

Grupo de destino: {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer ou {db}.{schema}.viewer. Deve pertencer ao banco de dados atual. Para permissões de grupo, consulte Grupos de usuários e permissões no SLPM.

user_name

Usuário a adicionar. Formatos aceitos: ID da conta Alibaba Cloud (ex.: 13432193xxxx), nome de exibição da conta (ex.: x*@aliyun.com), UID de usuário RAM com prefixo p4_ (ex.: p4_202338382183xxx) ou nome de exibição de usuário RAM (ex.: RAM$mainaccount:subuser).

Exemplos

-- Add a RAM user to the mydb.public.developer group
CALL slpm_grant ('mydb.public.developer', 'p4_202338382183xxx');

-- Add a RAM user to the mydb.admin group
CALL slpm_grant ('mydb.admin', 'RAM$my_test:xxx');

-- This fails: cross-database grants are not supported.
-- Connect to otherdb first, then call slpm_grant.
CALL slpm_grant ('otherdb.admin', '13532313103042xxx');

slpm_revoke

Remove um usuário de um grupo de usuários no banco de dados atual.

Pré-requisitos

Requisito

Detalhes

Permissão

Superuser ou membro do grupo {db}.admin

Status do SLPM

Deve estar ativado

Escopo

Remove usuários de grupos apenas no banco de dados atual

Sintaxe

CALL slpm_revoke ( role_name, user_name );

Parâmetros

Parâmetro

Descrição

role_name

Grupo do qual remover o usuário: {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer ou {db}.{schema}.viewer. Deve pertencer ao banco de dados atual.

user_name

Usuário a remover. Formatos aceitos: ID da conta Alibaba Cloud (ex.: 13432193xxxx), nome de exibição da conta (ex.: x*@aliyun.com), UID de usuário RAM com prefixo p4_ (ex.: p4_202338382183xxx) ou nome de exibição de usuário RAM (ex.: RAM$mainaccount:subuser).

Exemplos

-- Remove a RAM user from the mydb.public.developer group
CALL slpm_revoke ('mydb.public.developer', 'p4_202338382183xxx');

-- Remove a RAM user from the mydb.admin group
CALL slpm_revoke ('mydb.admin', 'RAM$my_test:xxx');

-- This fails: cross-database revocations are not supported.
-- Connect to otherdb first, then call slpm_revoke.
CALL slpm_revoke ('otherdb.admin', '13532313103042xxx');

slpm_disable

Desativa o SLPM para o banco de dados atual. Os quatro grupos de usuários são mantidos após a desativação — use slpm_cleanup para excluí-los.

Pré-requisitos

Requisito

Detalhes

Permissão

Ser superuser

Sintaxe

CALL slpm_disable ();

Alterações de permissão após a desativação

Assunto

Permissões concedidas

{db}.admin, {db}.{schema}.developer, {db}.{schema}.writer, {db}.{schema}.viewer

Mantidas. Membros de {db}.{schema}.developer permanecem proprietários dos objetos do banco de dados.

Grupo PUBLIC

CONNECT e TEMPORARY no banco de dados; USAGE e CREATE no schema public; EXECUTE em funções e procedimentos no schema public; USAGE em linguagens e tipos definidos pelo usuário

Exemplo

CALL slpm_disable ();

slpm_cleanup

Exclua os grupos de usuários {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer e {db}.{schema}.viewer retidos após slpm_disable. Se o banco de dados tiver muitos objetos, chame esta função várias vezes até excluir todos os grupos.

Pré-requisitos

Requisito

Detalhes

Permissão

Ser superuser

Escopo

Banco de dados existente: conecte-se ao banco de dados de destino. Banco de dados excluído: conecte-se a partir de qualquer banco de dados.

Sintaxe

CALL slpm_cleanup ( db_name [, batch_size ] );

Parâmetros

Parâmetro

Descrição

Padrão

Intervalo de valores

db_name

Banco de dados cujos grupos de usuários serão excluídos. Coloque entre aspas duplas se o nome contiver caracteres especiais ou letras maiúsculas, ex.: "MYDB".

batch_size

Número máximo de objetos a processar por chamada. Defina como 0 para usar o valor do parâmetro max_locks_per_transaction.

64

[0, 64]. Valores fora deste intervalo são inválidos.

Mensagens de retorno

Mensagem

Significado

DONE BUT NOT COMPLETED

Alguns objetos permanecem; os grupos de usuários ainda não foram excluídos. Chame slpm_cleanup novamente.

COMPLETED

Todos os objetos foram processados e os grupos de usuários foram excluídos.

Exemplos

-- Delete user groups for mydb, processing up to max_locks_per_transaction objects per call
CALL slpm_cleanup ('mydb');

-- Delete user groups for mydb, processing up to 64 objects per call
CALL slpm_cleanup ('mydb', 64);

Caso 1: Excluir o banco de dados primeiro e depois limpar seus grupos de usuários

DROP DATABASE mydb;
-- After dropping the database, clean up its user groups from any database.
CALL slpm_cleanup ('mydb');

Caso 2: Limpar grupos de usuários para um banco de dados existente

Conecte-se a otherdb antes de chamar slpm_cleanup. Chamá-lo a partir de um banco de dados diferente retorna o seguinte erro:

ERROR:  Permission Denied. execute in database otherdb, or drop database before call slpm_cleanup.

slpm_rename_schema

Renomeia um schema e atualize automaticamente os nomes de seus quatro grupos de usuários associados ({db}.{schema}.developer, {db}.{schema}.writer, {db}.{schema}.viewer e a entrada do schema em {db}.admin). Sempre use esta função em vez de um simples ALTER SCHEMA RENAME — este último não atualiza os nomes dos grupos de usuários.

Pré-requisitos

Requisito

Detalhes

Permissão

Superuser ou membro do grupo {db}.admin

Sintaxe

CALL slpm_rename_schema ( old_name, new_name );

Parâmetros

Parâmetro

Descrição

old_name

Nome atual do schema. Coloque entre aspas duplas se o nome contiver caracteres especiais ou letras maiúsculas, ex.: "MYSCHEMA".

new_name

Novo nome do schema. As mesmas regras de aspas se aplicam.

Exemplo

CALL slpm_rename_schema ('oldschema', 'newschema');

Próximos passos