Tous les produits
Search
Centre de documentation

PolarDB:Système de comptes et d'autorisations

Dernière mise à jour :Aug 27, 2026

Le système de comptes et d'autorisations de PolarDB-X est compatible avec MySQL et prend en charge des instructions telles que GRANT, REVOKE, SHOW GRANTS, CREATE USER, DROP USER et SET PASSWORD.

Comptes

Account Permissions

Un compte est identifié par une combinaison d'un nom d'utilisateur et d'un nom d'hôte, au format username@'host'. Les comptes partageant le même nom d'utilisateur mais possédant des noms d'hôte différents sont distincts. Par exemple, lily@30.9.73.96 et lily@30.9.73.100 constituent deux comptes séparés, susceptibles d'avoir des mots de passe et des autorisations différents.

Lorsque vous créez une base de données dans la console PolarDB-X, le système génère automatiquement deux comptes système pour cette base : un compte administrateur et un compte en lecture seule. Il est impossible de supprimer ces comptes intégrés ou de modifier leurs autorisations.

  • Le nom du compte administrateur correspond exactement au nom de la base de données. Par exemple, si la base de données s'appelle easydb, le compte administrateur porte également le nom easydb.

  • Le nom du compte en lecture seule correspond au nom de la base de données suivi du suffixe _RO. Ainsi, pour une base nommée easydb, le compte en lecture seule sera nommé easydb_RO.

À titre d'exemple, si vous disposez de deux bases de données, dreamdb et andordb, la base dreamdb possède un compte administrateur nommé dreamdb et un compte en lecture seule nommé dreamdb_RO. De son côté, la base andordb dispose d'un compte administrateur appelé andordb et d'un compte en lecture seule intitulé andordb_RO.

Remarque

Les comptes créés à l'aide de l'instruction CREATE USER dans PolarDB-X existent uniquement au sein de PolarDB-X. Ils ne sont pas liés à ApsaraDB RDS et ne sont pas synchronisés avec les instances ApsaraDB RDS backend.

Règles relatives aux comptes

  • Un compte administrateur détient toutes les autorisations.

  • Seul un compte administrateur peut créer d'autres comptes et accorder des autorisations.

  • Un compte administrateur est associé à une base de données spécifique et ne possède aucune autorisation sur les autres bases. Lors de la connexion, ce compte ne peut accéder qu'à sa base associée. Il ne peut pas octroyer d'autorisations pour d'autres bases. Par exemple, le compte administrateur de easydb ne peut se connecter qu'à la base easydb et ne peut accorder des autorisations que sur cette base easydb ou ses tables.

  • Un compte en lecture seule dispose uniquement de l'autorisation SELECT.

Conventions de nommage

  • Les noms d'utilisateur sont sensibles à la casse.

  • Ils doivent contenir entre 4 et 20 caractères.

  • Ils doivent commencer par une lettre.

  • Ils peuvent inclure des lettres majuscules, des lettres minuscules et des chiffres.

Règles relatives aux mots de passe

  • Ils doivent contenir entre 6 et 20 caractères.

  • Ils peuvent inclure des lettres majuscules, des lettres minuscules, des chiffres et les caractères spéciaux suivants : @#$%^&+=.

Règles de correspondance des hôtes

  • L'hôte doit être une adresse IP. Vous pouvez utiliser les jokers _ et %. Le joker _ correspond à un seul caractère, tandis que le joker % correspond à zéro ou plusieurs caractères. Un hôte contenant un joker doit être entouré de guillemets simples ('), par exemple lily@'30.9.%.%' ou david@'%'.

  • Si une tentative de connexion correspond à deux comptes, le compte dont le préfixe d'adresse IP correspondante est le plus long est prioritaire. Le préfixe correspond à la partie de l'adresse IP située avant tout joker. Par exemple, si le système contient deux comptes, david@'30.9.12_.xxx' et david@'30.9.1%.234', une tentative de connexion par l'utilisateur david depuis l'hôte 30.9.127.xxx utilisera le compte david@'30.9.12_.xxx'.

  • Lorsque le VPC est activé, l'adresse IP de l'hôte change.

    Important

    Pour éviter que les configurations de compte et d'autorisations ne deviennent invalides, définissez HOST sur '%' afin de correspondre à n'importe quelle adresse IP.

Autorisations

Niveaux d'autorisation

  • Niveau base de données (pris en charge)

  • Niveau table (pris en charge)

  • Niveau global (non encore pris en charge)

  • Niveau colonne (non encore pris en charge)

  • Niveau sous-programme (non encore pris en charge)

Autorisations prises en charge

PolarDB-X prend en charge huit autorisations de base au niveau des tables : CREATE, DROP, ALTER, INDEX, INSERT, DELETE, UPDATE et SELECT.

  • L'instruction TRUNCATE nécessite l'autorisation DROP sur la table.

  • L'instruction REPLACE requiert les autorisations INSERT et DELETE sur la table.

  • Les instructions CREATE INDEX et DROP INDEX exigent l'autorisation INDEX sur la table.

  • L'instruction CREATE SEQUENCE nécessite l'autorisation CREATE au niveau de la base de données.

  • L'instruction DROP SEQUENCE requiert l'autorisation DROP au niveau de la base de données.

  • L'instruction ALTER SEQUENCE exige l'autorisation ALTER au niveau de la base de données.

  • L'instruction INSERT ON DUPLICATE UPDATE nécessite à la fois les autorisations INSERT et UPDATE sur la table.

Règles relatives aux autorisations

  • Les autorisations sont liées à un compte (username@'host'), et non simplement à un nom d'utilisateur.

  • Lors de l'octroi d'une autorisation, le système vérifie l'existence de la table spécifiée. Si celle-ci n'existe pas, une erreur est renvoyée.

  • Les niveaux d'autorisation sont hiérarchiques, du plus élevé au plus faible : niveau global (non encore pris en charge), niveau base de données, niveau table et niveau colonne.

  • L'octroi d'une autorisation de niveau supérieur remplace toute autorisation de niveau inférieur. La révocation d'une autorisation de niveau supérieur entraîne également la révocation des autorisations de niveau inférieur qui lui sont associées.

  • L'autorisation USAGE n'est pas prise en charge.

Octroi d'autorisations sur plusieurs bases de données

Dans PolarDB-X 5.3.6 et versions ultérieures, vous pouvez accorder des autorisations sur plusieurs bases de données à un seul compte :

  • Sur la page Account Management de la console Alibaba Cloud PolarDB-X, créez un compte et accordez-lui des autorisations. Cette méthode est recommandée.

  • Vous pouvez également utiliser les instructions SQL CREATE USER et GRANT.

    Remarque

    Si vous utilisez des instructions SQL, tenez compte des points suivants :

    1. Seul un compte administrateur peut créer des utilisateurs et accorder des autorisations.

    2. Un administrateur ne peut accorder des autorisations que sur la base de données qu'il gère. Par exemple, si l'administrateur de la base A crée un compte new_user@'%' et que vous souhaitez que ce compte accède aux bases A et B, l'administrateur de A doit accorder les autorisations pour A, tandis que l'administrateur de B doit accorder celles pour B.

Utilisation d'un compte multi-bases

Dans PolarDB-X 5.3.6 et versions ultérieures, vous pouvez accorder à un compte des autorisations sur plusieurs bases de données. Supposons qu'un compte tel que new_user@'%' dispose des autorisations SELECT et INSERT sur les bases A et B. Les limitations suivantes s'appliquent :

  • Pour interroger une table de la base B alors que vous êtes connecté à la base A, vous devez d'abord changer de base en exécutant USE B; SELECT * FROM table_in_B;. Les requêtes inter-bases telles que SELECT * FROM B.table_in_B; ne sont pas prises en charge.

  • Pour insérer des données dans une table de la base B alors que vous êtes connecté à la base A, vous devez exécuter USE B; INSERT INTO table_in_B VALUES('value');. Les insertions inter-bases telles que INSERT INTO B.table_in_B VALUES('value'); ne sont pas prises en charge.

  • Le même principe s'applique aux autres instructions SQL.

Instructions

Créer un compte (CREATE USER)

  • Syntaxe

    CREATE USER user_specification [, user_specification] ...
    user_specification: user [ auth_option ]
    auth_option: IDENTIFIED BY 'auth#string'
                
  • Exemples

    • Créez un compte nommé lily avec le mot de passe 123456. Ce compte ne peut se connecter que depuis l'hôte 30.9.73.96.

      CREATE USER lily@30.9.73.96 IDENTIFIED BY '123456';        
    • Créez un compte nommé david pouvant se connecter depuis n'importe quel hôte. Ce compte ne possède pas de mot de passe.

      CREATE USER david@'%'; 

Supprimer un compte (DROP USER)

  • Syntaxe

    DROP USER user [, user] ...    
  • Exemple

    Supprimez le compte lily@30.9.73.96 :

    DROP USER lily@30.9.73.96;       

Modifier le mot de passe d'un compte (SET PASSWORD)

  • Syntaxe

    SET PASSWORD FOR user = password_option
    
    password_option: {
        PASSWORD('auth_string')
    }        
  • Exemple

    Modifiez le mot de passe du compte lily@30.9.73.96 pour le définir sur 123456.

    SET PASSWORD FOR lily@30.9.73.96 = PASSWORD('123456')         

Accorder des autorisations à un compte (GRANT)

  • Syntaxe

    GRANT
        priv_type[, priv_type] ...
        ON priv_level
        TO user_specification [, user_specification] ...
        [WITH GRANT OPTION]
    priv_level: {
      | db_name.*
      | db_name.tbl_name
      | tbl_name
    }
    user_specification:
        user [ auth_option ]
    auth_option: {
        IDENTIFIED BY 'auth#string'
    }
                
    Remarque

    Si le compte mentionné dans une instruction GRANT n'existe pas, l'instruction échoue, sauf si vous incluez une clause IDENTIFIED BY. Si une clause IDENTIFIED BY est fournie, le système crée le compte et accorde les autorisations spécifiées.

  • Exemples

    • Pour la base de données easydb, créez un compte nommé david pouvant se connecter depuis n'importe quel hôte et disposant de toutes les autorisations sur la base.

      # Method 1: Create the account, then grant permissions.
      CREATE USER david@'%' IDENTIFIED BY 'your#password';
      GRANT ALL PRIVILEGES ON easydb.* to david@'%';
      
      # Method 2: Create the account and grant permissions in a single statement.
      GRANT ALL PRIVILEGES ON easydb.* to david@'%' IDENTIFIED BY 'your#password';
    • Pour la base de données easydb, créez un compte nommé hanson pouvant se connecter depuis n'importe quel hôte et disposant de toutes les autorisations sur la table easydb.employees.

      GRANT ALL PRIVILEGES ON easydb.employees to hanson@'%' 
      IDENTIFIED BY 'your#password';    
    • Pour la base de données easydb, créez un compte nommé hanson ne pouvant se connecter que depuis l'hôte 192.168.3.10 et disposant des autorisations INSERT et SELECT sur la table easydb.emp.

      GRANT INSERT,SELECT ON easydb.emp to hanson@'192.168.3.10' 
      IDENTIFIED BY 'your#password';
    • Pour la base de données easydb, créez un compte en lecture seule nommé actro pouvant se connecter depuis n'importe quel hôte.

      GRANT SELECT ON easydb.* to actro@'%' IDENTIFIED BY 'your#password';          

Révoquer des autorisations (REVOKE)

  • Syntaxe

    • Révoque des autorisations spécifiques d'un compte au niveau d'autorisation spécifié par priv_level.

      REVOKE
      priv_type
      [, priv_type] ...
      ON priv_level         
    • Révoque toutes les autorisations au niveau de la base de données et de la table d'un utilisateur.

      REVOKE ALL PRIVILEGES, GRANT OPTION
      FROM user [, user] ...           
  • Exemples

    • Révoquez les autorisations CREATE, DROP et INDEX sur la table easydb.emp du compte hanson@'%'.

      REVOKE CREATE,DROP,INDEX ON easydb.emp FROM hanson@'%';      
    • Révoquez toutes les autorisations du compte lily@30.9.73.96.

      REVOKE ALL PRIVILEGES,GRANT OPTION FROM lily@30.9.73.96;       
      Remarque

      Pour assurer la compatibilité avec MySQL, vous devez inclure la clause GRANT OPTION.

Afficher les autorisations (SHOW GRANTS)

  • Syntaxe

    SHOW GRANTS[ FOR user@host];           
  • Exemple

    SHOW GRANTS FOR user1@host;       
Remarque

Dans PolarDB-X 5.3.6 et versions ultérieures, l'instruction SHOW GRANTS affiche uniquement les autorisations de l'utilisateur actuel. Pour consulter les informations sur tous les comptes et autorisations, utilisez la console Alibaba Cloud PolarDB-X.