Error MySQL (version 8, 9) SQL import

Lors de l’import d’un backup (mysqldump) MySQL « custom », il est possible d’avoir les erreurs ci-dessous;

Erreur SESSION_VARIABLES_ADMIN

ERROR 1227 (42000) at line 18:
Access denied; you need (at least one of) the SUPER, SYSTEM_VARIABLES_ADMIN or SESSION_VARIABLES_ADMIN privilege(s) for this operation

est due à la commande SQL suivante dans le fichier d’import :

SET @@SESSION.SQL_LOG_BIN= 0;

Depuis MySQL 8.0.26+ et MariaDB 10.5+, cette variable ne peut être modifiée que par un utilisateur possédant un des privilèges suivants :

  • SUPER (déprécié dans MySQL)
  • SESSION_VARIABLES_ADMIN
  • SYSTEM_VARIABLES_ADMIN

How to fix:

Option 1 – Accorder le privilège à l’utilisateur (si possible)

Avec la fonction LayerOps de « template » de fichier, créer le fichier:

/docker-entrypoint-initdb.d/initialize.sql

avec comme contenu:

CREATE DATABASE IF NOT EXISTS database_name;
use database_name;
GRANT SESSION_VARIABLES_ADMIN ON *.* TO 'user_name'@'%';
FLUSH PRIVILEGES;

Option 2 – Supprimer ou commenter la ligne dans le fichier .sql

-- SET @@SESSION.SQL_LOG_BIN= 0;

Erreur SYSTEM_VARIABLES_ADMIN

ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER or SYSTEM_VARIABLES_ADMIN privilege(s)

est due à la commande SQL suivante dans le fichier d’import :

SET @@GLOBAL.GTID_PURGED = '';

How to fix:

Option 1 – Accorder le privilège à l’utilisateur (si possible)

Avec la fonction LayerOps de « template » de fichier, créer le fichier:

/docker-entrypoint-initdb.d/initialize.sql

avec comme contenu:

CREATE DATABASE IF NOT EXISTS database_name;
use database_name;
GRANT SYSTEM_VARIABLES_ADMIN ON *.* TO 'user_name'@'%';
FLUSH PRIVILEGES;

Option 2 – Supprimer ou commenter la ligne dans le fichier .sql

-- SET @@GLOBAL.GTID_PURGED