À propos des utilisateurs MySQL

Cette page décrit la manière dont Cloud SQL fonctionne avec les utilisateurs MySQL. Les comptes utilisateur MySQL permettent d'assurer la sécurité en contrôlant l'accès aux bases de données MySQL.

Pour obtenir la documentation complète sur les utilisateurs dans MySQL, consultez la section Contrôle des accès et gestion des comptes dans la documentation MySQL. Pour en savoir plus sur la création et la gestion des utilisateurs Cloud SQL dans Cloud SQL, consultez la section Créer et gérer des utilisateurs.

Avantages des comptes utilisateur MySQL

Les comptes utilisateur MySQL vous permettent de vous connecter à votre instance Cloud SQL et de l'administrer. Ils sont également requis pour que les applications puissent accéder à votre instance.

Restrictions liées au super-utilisateur

Dans Cloud SQL, les clients ne peuvent pas créer ni accéder à des utilisateurs disposant d'attributs de super-utilisateur.

Étant donné que Cloud SQL pour MySQL est un service géré, il restreint l'accès à certaines tables et procédures système.

Les privilèges de langage de manipulation de données (LMD) et de langage de définition de données (LDD) sont limités sur certaines tables de schéma.

Voici la liste des tables système MySQL 5.6 du schéma mysql qui nécessitent des autorisations d'écriture : audit_log_rules_expanded, audit_log_supported_ops, audit_log_rules, cloudsql_replica_index, db, event, func, heartbeat, plugin, proc, user et tables_priv.

Et voici la liste pour MySQL 5.7 : audit_log_rules_expanded, audit_log_supported_ops, audit_log_rules, cloudsql_replica_index, db, event, func, gtid_executed, heartbeat, plugin, proc, user et tables_priv.

Pour obtenir des informations sur MySQL 8.0 et MySQL 8.4, consultez les pages Droits d'utilisateur de MySQL 8.0 (cloudsqlsuperuser) et Droits d'utilisateur de MySQL 8.4 (cloudsqlsuperuser).

Format des comptes utilisateur MySQL

Les comptes utilisateur MySQL se composent de deux éléments: un nom d'utilisateur et un nom d'hôte. Le nom d'utilisateur identifie l'utilisateur, tandis que le nom d'hôte spécifie les hôtes depuis lesquels cet utilisateur peut se connecter. Ces deux noms sont combinés pour former un compte utilisateur:

'<user_name>'@'<host_name>'

Vous pouvez spécifier une adresse IP ou une plage d'adresses spécifique pour le nom d'hôte, ou utiliser le caractère pourcentage ("%") pour ne pas restreindre ce nom. Sachez que si vous vous connectez à votre instance à l'aide d'adresses IP, vous devez ajouter celle de votre client en tant qu'adresse autorisée, même si le nom d'hôte de votre utilisateur n'est pas restreint.

Les comptes utilisateur sont définis à la fois par le nom d'utilisateur et le nom d'hôte. Par exemple, 'user'@'%' est un compte utilisateur différent de 'user'@'localhost'.

Utilisateur MySQL par défaut

Lors de leur création, les instances MySQL disposent d'un compte utilisateur par défaut : 'root'@'%'. Vous utilisez ce compte pour vous connecter à l'instance de base de données et la gérer pour la première fois. L'utilisateur par défaut dispose de tous les droits sur la base de données, à l'exception de SUPER et FILE. Dans Cloud SQL, vous ne pouvez pas renommer 'root'@'%'.

La valeur par défaut pour root'@'% n'est pas un mot de passe, et MySQL ne vous oblige pas à utiliser un mot de passe pour root'@'%. Toutefois, étant donné que root'@'% existe sur la plupart des installations MySQL, l'utilisateur root'@'% est régulièrement la cible de pirates. Toute personne ou tout programme ayant accès à votre instance dispose d'un accès quasi illimité à celle-ci et à ses données, ainsi que d'un contrôle quasi total sur elles. Pour cette raison, nous vous recommandons de configurer votre utilisateur root'@'% avec un mot de passe sécurisé, ou de le supprimer. Pour en savoir plus sur la configuration du compte utilisateur par défaut, consultez la section Configurer le compte utilisateur par défaut.

Utilisateurs système

Il existe sept utilisateurs système :

  • root@localhost, root@127.0.0.1, root@::1

    Permet de fournir le service de base de données géré.

  • cloudsqlreplica@%

    Sert d'utilisateur de réplication pour les instances dupliquées.

  • cloudsqlimport@localhost, cloudsqlimport@127.0.0.1

    Permet d'effectuer des importations de données.

  • cloudsqlexport@localhost, cloudsqlexport@127.0.0.1

    Permet d'exporter des données.

  • cloudsqloneshot

    Permet d'effectuer d'autres opérations de base de données.

  • cloudsqlapplier@localhost

    Permet d'effectuer des opérations de réplication dans une instance répliquée de serveur externe ou une réplication entre versions majeures.

  • cloudsqlobservabilityadmin

    Utilisé pour l'observabilité de la base de données.

  • cloudiamgroup@'%'

    Utilisé pour l'authentification de groupe IAM.

Vous ne pouvez pas supprimer ni modifier ces utilisateurs.

Autres comptes utilisateur MySQL

Vous pouvez également créer d'autres comptes utilisateur MySQL. Cette bonne pratique vous permet d'utiliser plusieurs comptes à des fins différentes.

Vous pouvez créer un compte utilisateur avec un nom d'hôte restreint ou utiliser des commandes SQL pour limiter les droits sur vos comptes utilisateur.

Pour en savoir plus sur les noms de compte utilisateur, consultez la section Spécifier des noms de compte dans la documentation MySQL. Pour créer un utilisateur MySQL dans Cloud SQL, consultez la section Créer un utilisateur.

Droits d'utilisateur de MySQL 5.6 et 5.7

MySQL fournit des droits précis que vous pouvez accorder ou retirer à un utilisateur. Ainsi, vous pouvez contrôler les actions qu'un utilisateur peut entreprendre sur votre instance.

Les utilisateurs créés à l'aide de Cloud SQL disposent des mêmes droits que l'utilisateur MySQL par défaut. Vous pouvez modifier leurs droits grâce aux instructions GRANT ou REVOKE.

Lorsque vous utilisez le client mysql pour créer un utilisateur, vous devez explicitement lui accorder des droits en utilisant l'instruction GRANT.

Pour en savoir plus sur les droits compatibles avec MySQL, consultez la section relative aux droits fournis par MySQL.

Droits d'utilisateur de MySQL 8.0 (cloudsqlsuperuser)

Dans Cloud SQL pour MySQL 8.0, lorsque vous créez un utilisateur, le rôle cloudsqlsuperuser est automatiquement attribué à cet utilisateur. Le rôle cloudsqlsuperuser est un rôle Cloud SQL qui comprend un certain nombre de privilèges MySQL. Ce rôle accorde à l'utilisateur tous les droits statiques MySQL, à l'exception de SUPER et FILE.

Le rôle cloudsqlsuperuser n'accepte que les droits dynamiques suivants basés sur les versions mineures de MySQL 8.0 :

MySQL 8.0.18

MySQL 8.0.26

MySQL 8.0.27

MySQL 8.0.28

MySQL 8.0.29 (obsolète)

MySQL 8.0.30 et versions ultérieures

Le rôle cloudsqlsuperuser ne permet pas d'effectuer d'opérations LDD (langage de définition de données) sur la base de données système mysql.

Pour afficher la liste complète des droits accordés au rôle cloudsqlsuperuser, exécutez l'instruction SHOW GRANTS dans le client mysql :

SHOW GRANTS FOR 'cloudsqlsuperuser'

Droits d'utilisateur MySQL 8.4 (cloudsqlsuperuser)

Comme dans Cloud SQL pour MySQL 8.0, dans Cloud SQL pour MySQL 8.4, lorsque vous créez un utilisateur, le rôle cloudsqlsuperuser lui est automatiquement attribué.

Dans MySQL 8.4, le rôle cloudsqlsuperuser dispose des mêmes droits que dans MySQL 8.0.x. Cependant, MySQL 8.4 présente les principales différences suivantes avec MySQL 8.0.x:

De plus, Cloud SQL pour MySQL 8.4 n'accorde pas les privilèges TRANSACTION_GTID_TAG ou TELEMETRY_LOG_ADMIN introduits dans MySQL 8.4.

Étape suivante