Maison > base de données > tutoriel mysql > Pourquoi est-ce que j'obtiens l'erreur « Accès refusé ; vous avez besoin du privilège SUPER pour cette opération » lors de l'importation de fonctions SQL dans phpMyAdmin ?

Pourquoi est-ce que j'obtiens l'erreur « Accès refusé ; vous avez besoin du privilège SUPER pour cette opération » lors de l'importation de fonctions SQL dans phpMyAdmin ?

Patricia Arquette
Libérer: 2024-11-02 14:53:30
original
307 Les gens l'ont consulté

Why do I get the

Erreur : accès refusé ; Vous avez besoin du SUPER privilège pour cette opération

Lorsque vous essayez d'importer des fonctions SQL dans phpMyAdmin, vous pouvez rencontrer le message d'erreur : "#1227 - Accès refusé ; vous avez besoin du SUPER privilège pour cette opération." Cette erreur peut être frustrante, mais la solution est relativement simple.

Comprendre le privilège SUPER

Dans MySQL, le privilège SUPER est un niveau d'autorisation spécial qui accorde aux utilisateurs le capacité à effectuer des opérations avancées, notamment la création et la modification de routines stockées. Par défaut, les utilisateurs standards ne possèdent pas le privilège SUPER.

Suppression de l'instruction DEFINER

Dans votre cas, le problème vient de l'inclusion de l'instruction DEFINER dans le Requête SQL. L'instruction DEFINER spécifie l'utilisateur qui sera propriétaire de la fonction créée. Si l'utilisateur spécifié ne dispose pas du privilège SUPER, la requête échouera.

Pour résoudre ce problème, supprimez l'instruction DEFINER de la requête SQL avant de l'importer dans phpMyAdmin. Cela permettra de créer la fonction sans avoir besoin du privilège SUPER.

Définition du délimiteur

De plus, il est essentiel de définir le champ délimiteur sous le texte SQL boîte dans phpMyAdmin. Ce champ spécifie le caractère qui sera utilisé pour séparer les instructions SQL. Par défaut, le point-virgule (;) est utilisé comme délimiteur, mais si votre requête inclut des points-virgules dans la définition de la fonction, vous devrez choisir un délimiteur différent.

Exemple de requête sans instruction DEFINER

Voici un exemple de requête SQL sans l'instruction DEFINER :

/*!50003 DROP FUNCTION IF EXISTS `f_calc_gst` */;;
/*!50003 SET SESSION SQL_MODE=""*/;;
/*!50003 CREATE*/ /*!50003 FUNCTION `f_calc_gst`(p_ht decimal(15,3), p_province varchar(2)) RETURNS varchar(255) CHARSET utf8
begin
  declare res varchar(255); 
  declare v_gst decimal(15,3);
  declare v_gst_formula varchar(255);

  select GST, GST_formula
  into v_gst, v_gst_formula
  from taxes_periods
  where NOW() between dt_debut and dt_fin
  and id_province = p_province;

  set v_gst_formula = replace(v_gst_formula, 'HT$', p_ht);
  set v_gst_formula = replace(v_gst_formula, 'GST%', v_gst);

  set res = concat('select round(', v_gst_formula, ',2) "gst"');
  return res;
end */;;
Copier après la connexion

Une fois que vous avez supprimé l'instruction DEFINER et défini le délimiteur correct, vous devriez pouvoir importer la requête SQL dans phpMyAdmin avec succès sans rencontrer l'erreur d'accès refusé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal