Tous les produits
Search
Centre de documentation

Hologres:SLPM functions

Dernière mise à jour :Aug 11, 2026

Hologres propose huit fonctions stockées pour gérer le modèle d'autorisation au niveau du schéma (SLPM). Utilisez ces fonctions pour activer, configurer et nettoyer le contrôle d'accès basé sur le SLPM dans vos bases de données.

Présentation des fonctions

Fonction Objectif Autorisation requise
slpm_enable Active le SLPM pour une base de données Superutilisateur
slpm_migrate Migre les objets existants vers le SLPM —
slpm_create_user Crée un utilisateur dans le SLPM Superutilisateur ou membre de {db}.admin
slpm_grant Ajoute un utilisateur à un groupe d'utilisateurs Superutilisateur ou membre de {db}.admin
slpm_revoke Supprime un utilisateur d'un groupe d'utilisateurs Superutilisateur ou membre de {db}.admin
slpm_disable Désactive le SLPM pour une base de données Superutilisateur
slpm_cleanup Supprime les groupes d'utilisateurs conservés après la désactivation Superutilisateur
slpm_rename_schema Renomme un schéma et ses groupes d'utilisateurs associés Superutilisateur ou membre de {db}.admin

Flux de travail types

Configuration initiale

  1. Exécutez slpm_enable pour activer le SLPM. Le système crée automatiquement quatre groupes d'utilisateurs.

  2. Exécutez slpm_migrate pour placer les objets existants (tables, vues, tables distantes) sous la propriété du SLPM.

  3. Exécutez slpm_create_user ou slpm_grant pour assigner les utilisateurs aux groupes.

Gestion courante des utilisateurs

  • Utilisez slpm_grant pour ajouter un utilisateur à un groupe.

  • Utilisez slpm_revoke pour retirer un utilisateur d'un groupe.

Décommissionnement de la base de données

  1. Exécutez slpm_disable pour désactiver le SLPM. Les groupes d'utilisateurs sont conservés.

  2. Exécutez slpm_cleanup pour supprimer les groupes d'utilisateurs conservés.

slpm_enable

Active le SLPM pour la base de données actuelle. Après l'activation, le système crée automatiquement les groupes d'utilisateurs suivants : {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer et {db}.{schema}.viewer.

Prérequis

Exigence Détails
Autorisation Doit être superutilisateur de l'instance Hologres

Syntaxe

CALL slpm_enable ();

Modifications des autorisations après activation

Sujet Avant l'activation Après l'activation
Groupe PUBLIC Dispose d'autorisations sur la base de données et tous les schémas Toutes les autorisations sont révoquées — les utilisateurs non autorisés ne peuvent pas se connecter
{db}.admin — Devient propriétaire de la base de données et de tous les schémas ; peut se connecter à la base de données
{db}.{schema}.developer, writer, viewer — Obtient l'autorisation USAGE sur le schéma ; peut se connecter à la base de données
{db}.{schema}.developer — Obtient l'autorisation CREATE sur le schéma
Objets créés dans un schéma — {db}.{schema}.developer = propriétaire ; writer = lecture/écriture ; viewer = lecture seule
Objets sans schéma (serveurs distants, wrappers de données distantes, langages) — {db}.admin = propriétaire ; developer, writer, viewer obtiennent l'autorisation USAGE

slpm_migrate

Migre les objets existants — tables, vues et tables distantes — vers le SLPM. Si votre base de données contient de nombreux objets, appelez cette fonction plusieurs fois jusqu'à ce que tous les objets soient migrés.

Syntaxe

CALL slpm_migrate ( [ batch_size ] );

Paramètres

Paramètre Description Plage de valeurs
batch_size Nombre maximal d'objets à migrer par appel. Définissez la valeur sur 0 pour utiliser la valeur du paramètre max_locks_per_transaction. [1, 64]. Les valeurs en dehors de cette plage sont invalides.
Pour les bases de données contenant des milliers ou des dizaines de milliers d'objets, contactez le support technique afin d'augmenter la valeur de max_locks_per_transaction avant la migration.

Messages de retour

Message Signification
DONE BUT NOT COMPLETED Certains objets restent à traiter. Exécutez à nouveau slpm_migrate.
COMPLETED Tous les objets sont migrés.

Exemples

-- 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

Crée un utilisateur dans le SLPM. Après la création, l'utilisateur ne dispose que de l'autorisation de connexion. Pour permettre l'analyse des données, ajoutez l'utilisateur à un groupe en utilisant slpm_grant ou en spécifiant directement role_name lors de cet appel.

Prérequis

Exigence Détails
Autorisation Superutilisateur ou membre du groupe {db}.admin

Syntaxe

CALL slpm_create_user ( user_name [, role_name] );

Paramètres

Paramètre Description
user_name Utilisateur à créer. Formats acceptés : ID de compte Alibaba Cloud (par ex. 13432193xxxx), nom d'affichage du compte (par ex. x*@aliyun.com), UID d'utilisateur RAM avec le préfixe p4_ (par ex. p4_202338382183xxx), ou nom d'affichage de l'utilisateur RAM (par ex. RAM$mainaccount:subuser).
role_name (Facultatif) Groupe auquel ajouter l'utilisateur : {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer ou {db}.{schema}.viewer. Pour les autorisations des groupes, consultez Groupes d'utilisateurs et autorisations dans le SLPM.

Exemples

-- 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

Ajoute un utilisateur à un groupe d'utilisateurs dans la base de données actuelle.

Prérequis

Exigence Détails
Autorisation Superutilisateur ou membre du groupe {db}.admin
Statut du SLPM Doit être activé
Portée Peut uniquement ajouter des utilisateurs aux groupes de la base de données actuelle

Syntaxe

CALL slpm_grant ( role_name, user_name );

Paramètres

Paramètre Description
role_name Groupe cible : {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer ou {db}.{schema}.viewer. Doit appartenir à la base de données actuelle. Pour les autorisations des groupes, consultez Groupes d'utilisateurs et autorisations dans le SLPM.
user_name Utilisateur à ajouter. Formats acceptés : ID de compte Alibaba Cloud (par ex. 13432193xxxx), nom d'affichage du compte (par ex. x*@aliyun.com), UID d'utilisateur RAM avec le préfixe p4_ (par ex. p4_202338382183xxx), ou nom d'affichage de l'utilisateur RAM (par ex. RAM$mainaccount:subuser).

Exemples

-- 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

Supprime un utilisateur d'un groupe d'utilisateurs dans la base de données actuelle.

Prérequis

Exigence Détails
Autorisation Superutilisateur ou membre du groupe {db}.admin
Statut du SLPM Doit être activé
Portée Peut uniquement supprimer des utilisateurs des groupes de la base de données actuelle

Syntaxe

CALL slpm_revoke ( role_name, user_name );

Paramètres

Paramètre Description
role_name Groupe dont il faut supprimer l'utilisateur : {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer ou {db}.{schema}.viewer. Doit appartenir à la base de données actuelle.
user_name Utilisateur à supprimer. Formats acceptés : ID de compte Alibaba Cloud (par ex. 13432193xxxx), nom d'affichage du compte (par ex. x*@aliyun.com), UID d'utilisateur RAM avec le préfixe p4_ (par ex. p4_202338382183xxx), ou nom d'affichage de l'utilisateur RAM (par ex. RAM$mainaccount:subuser).

Exemples

-- 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

Désactive le SLPM pour la base de données actuelle. Les quatre groupes d'utilisateurs sont conservés après la désactivation — utilisez slpm_cleanup pour les supprimer.

Prérequis

Exigence Détails
Autorisation Doit être superutilisateur

Syntaxe

CALL slpm_disable ();

Modifications des autorisations après désactivation

Sujet Autorisations accordées
{db}.admin, {db}.{schema}.developer, {db}.{schema}.writer, {db}.{schema}.viewer Conservées. Les membres de {db}.{schema}.developer restent propriétaires des objets de la base de données.
Groupe PUBLIC CONNECT et TEMPORARY sur la base de données ; USAGE et CREATE sur le schéma public ; EXECUTE sur les fonctions et procédures du schéma public ; USAGE sur les langages et types définis par l'utilisateur

Exemple

CALL slpm_disable ();

slpm_cleanup

Supprime les groupes d'utilisateurs {db}.admin, {db}.{schema}.developer, {db}.{schema}.writer et {db}.{schema}.viewer qui sont conservés après l'exécution de slpm_disable. Si votre base de données contient de nombreux objets, appelez cette fonction plusieurs fois jusqu'à ce que tous les groupes soient supprimés.

Prérequis

Exigence Détails
Autorisation Doit être superutilisateur
Portée Pour une base de données existante : doit être connecté à la base de données cible. Pour une base de données supprimée : se connecter depuis n'importe quelle base de données.

Syntaxe

CALL slpm_cleanup ( db_name [, batch_size ] );

Paramètres

Paramètre Description Valeur par défaut Plage de valeurs
db_name Base de données dont les groupes d'utilisateurs doivent être supprimés. Encadrez le nom de guillemets doubles s'il contient des caractères spéciaux ou des lettres majuscules, par ex. "MYDB". — —
batch_size Nombre maximal d'objets à traiter par appel. Définissez la valeur sur 0 pour utiliser la valeur du paramètre max_locks_per_transaction. 64 [0, 64]. Les valeurs en dehors de cette plage sont invalides.

Messages de retour

Message Signification
DONE BUT NOT COMPLETED Certains objets restent à traiter ; les groupes d'utilisateurs ne sont pas encore supprimés. Exécutez à nouveau slpm_cleanup.
COMPLETED Tous les objets sont traités et les groupes d'utilisateurs sont supprimés.

Exemples

-- 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);

Cas 1 : Supprimer la base de données d'abord, puis nettoyer ses groupes d'utilisateurs

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

Cas 2 : Nettoyer les groupes d'utilisateurs pour une base de données existante

Connectez-vous à otherdb avant d'appeler slpm_cleanup. L'appel depuis une autre base de données renvoie l'erreur suivante :

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

slpm_rename_schema

Renomme un schéma et renomme automatiquement ses quatre groupes d'utilisateurs associés ({db}.{schema}.developer, {db}.{schema}.writer, {db}.{schema}.viewer et l'entrée du schéma dans {db}.admin). Utilisez toujours cette fonction plutôt qu'un simple ALTER SCHEMA RENAME — ce dernier ne met pas à jour les noms des groupes d'utilisateurs.

Prérequis

Exigence Détails
Autorisation Superutilisateur ou membre du groupe {db}.admin

Syntaxe

CALL slpm_rename_schema ( old_name, new_name );

Paramètres

Paramètre Description
old_name Nom actuel du schéma. Encadrez le nom de guillemets doubles s'il contient des caractères spéciaux ou des lettres majuscules, par ex. "MYSCHEMA".
new_name Nouveau nom du schéma. Les mêmes règles de mise entre guillemets s'appliquent.

Exemple

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

Étapes suivantes