DocumentationCommerceGuide d’installation

PaaS uniquement

Directives générales concernant MySQL

Dernière mise à jour : 22 août 2025
  • Rubriques :

Créé pour :

  • Expérimenté
  • Administration
  • Développeur

Voir Configuration requise pour connaître les versions prises en charge de MySQL.

Adobe fortement vous recommande de respecter la norme suivante lors de la configuration de votre base de données :

  • Adobe Commerce utilise déclencheurs de base de données MySQL pour améliorer l’accès à la base de données lors de la réindexation. Ils sont créés lorsque le mode d’indexeur est défini sur schedule. L’application ne prend en charge aucun déclencheur personnalisé dans la base de données, car les déclencheurs personnalisés peuvent introduire des incompatibilités avec les futures versions d’Adobe Commerce.
  • Familiarisez-vous avec ces limites potentielles de déclencheur MySQL avant de continuer.
  • Pour améliorer la posture de sécurité de votre base de données, activez le mode SQL STRICT_ALL_TABLES pour empêcher le stockage de valeurs de données non valides, ce qui peut entraîner des interactions de base de données indésirables.
  • Adobe Commerce ne prend pas en charge la réplication basée sur les instructions MySQL. Veillez à utiliser uniquement réplication basée sur les lignes.
AVERTISSEMENT
Adobe Commerce utilise actuellement des instructions CREATE TEMPORARY TABLE dans les transactions, qui sont incompatibles avec les implémentations de base de données qui utilisent la réplication basée sur GTID, telles que les instances de deuxième génération Google Cloud SQL. Considérez MySQL pour Cloud SQL 8.0 comme une alternative.
REMARQUE
Si votre serveur web et votre serveur de base de données se trouvent sur des hôtes différents, effectuez les tâches décrites dans cette rubrique sur l’hôte du serveur de base de données, puis consultez Configurer une connexion à la base de données MySQL distante.

Installation de MySQL sur Ubuntu

Adobe Commerce 2.4 nécessite une installation correcte de MySQL 8.0. Suivez les liens ci-dessous pour obtenir des instructions sur l’installation de MySQL sur votre ordinateur.

  • Ubuntu
  • CentOS

Si vous prévoyez d’importer un grand nombre de produits, vous pouvez augmenter la valeur de max_allowed_packet de 16 Mo par défaut, soit une valeur supérieure à la valeur par défaut.

REMARQUE
La valeur par défaut s’applique aux projets d’infrastructure cloud et sur site d’Adobe Commerce. Les clients Adobe Commerce sur les infrastructures cloud Pro doivent ouvrir un ticket d’assistance pour augmenter la valeur du max_allowed_packet. Les clients Adobe Commerce sur les infrastructures cloud de Starter peuvent augmenter la valeur de en mettant à jour la configuration dans le fichier /etc/mysql/mysql.cnf.

Pour augmenter la valeur, ouvrez le fichier /etc/mysql/mysql.cnf dans un éditeur de texte et recherchez la valeur de max_allowed_packet. Enregistrez vos modifications dans le fichier mysql.cnf, fermez l’éditeur de texte et redémarrez MySQL (service mysql restart).

Pour vérifier éventuellement la valeur que vous définissez, saisissez la commande suivante à l’invite de mysql> :

SHOW VARIABLES LIKE 'max_allowed_packet';

Ensuite, Configurer l’instance de base de données.

Modifications de MySQL 8

Pour Adobe Commerce 2.4, nous avons ajouté la prise en charge de MySQL 8.
Cette section décrit les modifications majeures apportées à MySQL 8 que les développeurs doivent connaître.

Suppression de la largeur pour les types entiers (remplissage)

La spécification de largeur d’affichage pour les types de données entiers (TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT) a été abandonnée dans MySQL 8.0.17. Les instructions qui incluent des définitions de type de données dans leur sortie n'affichent plus la largeur d'affichage pour les types entiers, à l'exception de TINYINT(1). Les connecteurs MySQL supposent que les colonnes TINYINT(1) proviennent de colonnes BOOLÉENNES. Cette exception leur permet de continuer à faire cette supposition.

Exemple

Décrire admin_user dans mysql 8.19

Champ
Type
Null
Clé
Par défaut
Supplémentaire
user_id
int unsigned
NON
PRI
NULL
auto_increment
firstname
varchar(32)
OUI
NULL
lastname
varchar(32)
OUI
NULL
email
varchar(128)
OUI
NULL
username
varchar(40)
OUI
UNI
NULL
password
varchar(255)
NON
NULL
created
timestamp
NON
CURRENT_TIMESTAMP
DEFAULT_GENERATED
modified
timestamp
NON
CURRENT_TIMESTAMP
DEFAULT_GENERATED lors de la mise à jour des CURRENT_TIMESTAMP
logdate
timestamp
OUI
NULL
lognum
smallint unsigned
NON
0

À l'exception de TINYINT(1), toute marge intérieure entière (TINYINT > 1, SMALLINT, MEDIUMINT, INT, BIGINT) doit être supprimée du fichier db_schema.xml.

Pour plus d’informations, voir https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-19.html#mysqld-8-0-19-feature.

Comportement par défaut d’ORDER BY

Avant la version 8.0, les entrées étaient triées en fonction de la clé étrangère. L’ordre de tri par défaut dépend du moteur utilisé.
Indiquez toujours un ordre de tri si votre code dépend d’un tri spécifique.

Qualificateurs ASC et DESC obsolètes pour GROUP BY

Depuis MySQL 8.0.13, les qualificateurs ASC ou DESC obsolètes pour les clauses GROUP BY ont été supprimés. Les requêtes qui dépendaient auparavant du tri GROUP BY peuvent produire des résultats différents des versions précédentes de MySQL. Pour générer un ordre de tri donné, fournissez une clause ORDER BY.

Commerce et MySQL 8

Adobe Commerce a subi quelques modifications afin de prendre correctement en charge MySQL 8.

Comportement de requête et d’insertion

Adobe Commerce a désactivé le comportement de validation standard en définissant SET SQL_MODE='' dans /lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php:424.. Lorsque la validation est désactivée, il est possible que MySQL tronque les données. Dans MySQL, le comportement de la requête a changé : Select * on my_table where IP='127.0.0.1' ne renvoie plus de résultats, car l’adresse IP est désormais correctement vue comme une chaîne, plutôt que comme un entier.

Mise à niveau de MySQL 5.7 vers MySQL 8

Pour mettre correctement à jour MySQL de la version 5.7 à la version 8, vous devez suivre les étapes suivantes dans l’ordre :

  1. Mettez à niveau Adobe Commerce vers la version 2.4.0.
    Testez tout et assurez-vous que votre système fonctionne comme prévu.

  2. Activez le mode de maintenance :

    bin/magento maintenance:enable
    
  3. Effectuez une sauvegarde de la base de données :

    bin/magento setup:backup --db
    
  4. Mettez à jour MySQL vers la version 8.

  5. Importez les données sauvegardées dans MySQL.

  6. Nettoyez le cache :

    bin/magento cache:clean
    
  7. Désactivez le mode de maintenance :

    bin/magento maintenance:disable
    

Paramétrer l'instance de base de données

Cette section explique comment créer une instance de base de données pour Adobe Commerce. Bien qu’une nouvelle instance de base de données soit recommandée, vous pouvez éventuellement installer Adobe Commerce avec une instance de base de données existante.

Pour configurer une instance de base de données MySQL, procédez comme suit :

  1. Connectez-vous à votre serveur de base de données en tant qu'utilisateur.

  2. Accédez à une invite de commande MySQL :

    mysql -u root -p
    
  3. Entrez le mot de passe de l'utilisateur MySQL root lorsque vous y êtes invité.

  4. Saisissez les commandes suivantes dans l’ordre indiqué pour créer une instance de base de données nommée magento avec le nom d’utilisateur magento :

    create database magento;
    
    create user 'magento'@'localhost' IDENTIFIED BY 'magento';
    
    GRANT ALL ON magento.* TO 'magento'@'localhost';
    
    flush privileges;
    
  5. Saisissez exit pour quitter l’invite de commande.

  6. Vérifiez la base de données :

    mysql -u magento -p
    

    Si le moniteur MySQL s’affiche, vous avez créé la base de données correctement. Si une erreur s’affiche, répétez les commandes précédentes.

  7. Si votre serveur web et votre serveur de base de données se trouvent sur des hôtes différents, effectuez les tâches décrites dans cette rubrique sur l’hôte du serveur de base de données, puis consultez Configurer une connexion à la base de données MySQL distante.

    Nous vous recommandons de configurer votre instance de base de données en fonction de votre activité. Lors de la configuration de votre base de données, tenez compte des points suivants :

    • Les indexeurs nécessitent des valeurs de tmp_table_size et de max_heap_table_size plus élevées (par exemple, 64 millions). Si vous configurez le paramètre batch_size, vous pouvez ajuster cette valeur ainsi que les paramètres de taille de la table pour améliorer les performances de l’indexeur. Pour plus d’informations consultez leGuide d’optimisation .

    • Pour des performances optimales, assurez-vous que toutes les tables d’index MySQL et Adobe Commerce peuvent être conservées en mémoire (par exemple, configurez innodb_buffer_pool_size).

    • La réindexation sur MariaDB 10.4 prend plus de temps que les autres versions de MariaDB ou MySQL. Voir Bonnes pratiques de configuration.

  8. Pour que les champs de TIMESTAMP MySQL suivent les préférences et la composition attendues par l’architecture de schéma déclaratif de l’application, la variable système explicit_defaults_for_timestamp doit être définie sur on.

    Références :

    • MySQL 5.7
    • MariaDB

    Si ce paramètre n’est pas activé, bin/magento setup:db:status signale toujours que le Declarative Schema is not up to date.

NOTE
Le paramètre explicit_defaults_for_timestamp est obsolète. Ce paramètre contrôle les comportements TIMESTAMP obsolètes qui seront supprimés dans une prochaine version de MySQL. Lorsque ces comportements sont supprimés, le paramètre explicit_defaults_for_timestamp est également supprimé.
WARNING
Pour Adobe Commerce sur les projets d’infrastructure cloud, le paramètre explicit_defaults_for_timestamp de MySQL (MariaDB) est défini par défaut sur OFF.

La réindexation sur MariaDB 10.4 et 10.6 prend plus de temps que les versions précédentes de MariaDB ou MySQL. Pour accélérer la réindexation, nous vous recommandons de définir les paramètres de configuration MariaDB suivants :

  • optimizer_switch='rowid_filter=off'
  • optimizer_use_condition_selectivity = 1

Si vous constatez une dégradation des performances non liée à l’indexation après la mise à niveau vers MariaDB 10.6, envisagez d’activer le paramètre --query-cache-type . Par exemple, --query-cache-type=ON.

Avant de mettre à niveau Adobe Commerce sur des projets d’infrastructure cloud, vous devrez peut-être également mettre à niveau MariaDB (voir Bonnes pratiques de mise à niveau de MariaDB).

Par exemple :

  • Adobe Commerce 2.4.6 avec MariaDB version 10.5.1 ou ultérieure
  • Adobe Commerce 2.3.5 avec MariaDB version 10.3 ou antérieure

Outre ces recommandations, contactez l’administrateur de votre base de données pour configurer les paramètres suivants :

NOTE
Ces paramètres sont disponibles pour les déploiements sur site uniquement. Les clients Adobe Commerce sur les infrastructures cloud n’ont pas accès à ces paramètres.
  • --query-cache-limit
  • --query-cache-size
  • --join-buffer-size
  • --innodb-buffer-pool-size
recommendation-more-help
0f8e7db5-0e9c-4002-a5b8-a0088077d995