Heim > Datenbank > MySQL-Tutorial > Hauptteil

Warum erhalte ich beim Importieren von SQL-Funktionen in phpMyAdmin die Fehlermeldung „Zugriff verweigert; für diesen Vorgang benötigen Sie die Berechtigung SUPER'?

Patricia Arquette
Freigeben: 2024-11-02 14:53:30
Original
267 Leute haben es durchsucht

Why do I get the

Fehler: Zugriff verweigert; Für diesen Vorgang benötigen Sie die SUPER-Berechtigung

Beim Versuch, SQL-Funktionen in phpMyAdmin zu importieren, wird möglicherweise die Fehlermeldung angezeigt: „#1227 – Zugriff verweigert; Sie benötigen für diesen Vorgang die SUPER-Berechtigung.“ Dieser Fehler kann frustrierend sein, aber die Lösung ist relativ einfach.

Das SUPER-Privileg verstehen

In MySQL ist das SUPER-Privileg eine spezielle Berechtigungsstufe, die Benutzern das gewährt Fähigkeit, erweiterte Vorgänge auszuführen, einschließlich der Erstellung und Änderung gespeicherter Routinen. Standardmäßig verfügen Standardbenutzer nicht über das SUPER-Privileg.

Entfernen der DEFINER-Anweisung

In Ihrem Fall entsteht das Problem durch die Einbeziehung der DEFINER-Anweisung in die SQL-Abfrage. Die DEFINER-Anweisung gibt den Benutzer an, der Eigentümer der erstellten Funktion sein wird. Wenn der angegebene Benutzer nicht über die SUPER-Berechtigung verfügt, schlägt die Abfrage fehl.

Um dieses Problem zu beheben, entfernen Sie die DEFINER-Anweisung aus der SQL-Abfrage, bevor Sie sie in phpMyAdmin importieren. Dadurch kann die Funktion erstellt werden, ohne dass das SUPER-Privileg erforderlich ist.

Festlegen des Trennzeichens

Zusätzlich ist es wichtig, das Trennzeichenfeld unter dem SQL-Text festzulegen Feld in phpMyAdmin. Dieses Feld gibt das Zeichen an, das zum Trennen von SQL-Anweisungen verwendet wird. Standardmäßig wird das Semikolon (;) als Trennzeichen verwendet. Wenn Ihre Abfrage jedoch Semikolons in der Funktionsdefinition enthält, müssen Sie ein anderes Trennzeichen auswählen.

Beispielabfrage ohne DEFINER-Anweisung

Hier ist ein Beispiel der SQL-Abfrage ohne die DEFINER-Anweisung:

/*!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 */;;
Nach dem Login kopieren

Sobald Sie die DEFINER-Anweisung entfernt und das richtige Trennzeichen festgelegt haben, sollten Sie in der Lage sein, die SQL-Abfrage zu importieren in phpMyAdmin erfolgreich eingegeben, ohne dass der Fehler „Zugriff verweigert“ aufgetreten ist.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich beim Importieren von SQL-Funktionen in phpMyAdmin die Fehlermeldung „Zugriff verweigert; für diesen Vorgang benötigen Sie die Berechtigung SUPER'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!