GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Fehler Zugriff verweigert PROCESS-Privileg erforderlich [MySQL]

Ich habe versucht, die Datenbank mit dem MySQL-Dump-Befehl zu sichern, aber der Befehl ist mit einer Fehlermeldung fehlgeschlagen:‘Error:Access denied; Sie benötigen (mindestens eine) der PROCESS-Berechtigung(en) für diese Operation . Hier ist die vollständige Fehlermeldung.

$ mysqldump -u dbuser -p tg_db > tg_db.sql
Enter password:
mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces

Ich habe die Datenbank viele Jahre lang so ausgegeben und der Befehl ist plötzlich fehlgeschlagen. Wie habe ich diesen Fehler behoben? Los geht's.

Fehler beheben:Zugriff verweigert; Sie benötigen (mindestens eines) der PROCESS-Berechtigung(en) für diese Operation

Ich habe lediglich ‚--no-tablespaces hinzugefügt ‘-Option für den Befehl wie unten gezeigt:

$mysqldump -u dbuser -p tg_db --no-tablespaces > tg_db.sql

Und das funktionierte. Was ist also --no-tablespaces Option und warum sollte ich das hinzufügen?

Nun, diese Änderung erfolgte ab MySQL-Version 5.7.31+ und die auf meinem Server installierte Version war 8.0.23. Laut Dokumentation

mysqldump erfordert mindestens das SELECT-Privileg für gedumpte Tabellen, SHOW VIEW für gedumpte Ansichten, TRIGGER für gedumpte Trigger, LOCK TABLES, wenn die Option –single-transaction nicht verwendet wird, und (ab MySQL 8.0.21) PROCESS, wenn die Option –no-tablespaces Option wird nicht verwendet. Bestimmte Optionen erfordern möglicherweise andere Berechtigungen, wie in den Optionsbeschreibungen angegeben.

Sehen Sie sich auch die Option –no-tablespaces an. Diese Option entfernt die CREATE LOGFILE GROUP und CREATE TABLESPACE Anweisungen aus der Ausgabe.

Aber warum PROCESS Berechtigung ist für mysqldump erforderlich Befehl? Weil mysqldump versucht auf die INFORMATION_SCHEMA.FILES zuzugreifen Tabelle, die das PROCESS-Privileg erfordert. Nun, die Privilegien können über GRANT hinzugefügt werden auf globaler Ebene oder einer einzelnen Datenbank oder Tabelle. Aber der PROCESS Berechtigung muss wie unten gezeigt auf globaler Ebene hinzugefügt werden.

GRANT PROCESS ON *.* TO user@localhost;

Warum wird dieser Fehler nicht für alle Benutzer angezeigt? Der MySQL-Root-Benutzer ist offensichtlich nicht betroffen. Das Verhalten kann für andere Benutzer basierend auf ihren Berechtigungsstufen unterschiedlich sein.


Linux
  1. Linux – Netzwerkzugriff eines Prozesses blockieren?

  2. Ubuntu – Wie behebt man den Fehler „mount.nfs:Zugriff vom Server verweigert“?

  3. FEHLER:Zugriff verweigert beim Versuch, auf den Dateimanager im Plesk Control Panel zuzugreifen

  4. MySQL - FEHLER 1045 - Zugriff verweigert

  5. Benötigt mein Oracle-DBA Root-Zugriff?

So lösen Sie den MySQL-Fehler:Zugriff für Benutzer verweigert [email protected]

[Gelöst] Zugriff auf Speicherdatei nicht möglich, Berechtigung verweigert Fehler in KVM Libvirt

Fehlerbehebung:MySQL/MariaDB-Fehler Nr. 1044 und Nr. 1045 Zugriff für Benutzer verweigert

Behebung von HTTP Basic:Zugriff verweigert und schwerwiegender Authentifizierungsfehler mit GitLab

Netzwerkzugriff eines Prozesses blockieren?

Einhängefehler 13 =Berechtigung verweigert