wake-up-neo.com

Wie kann ich die vollen Berechtigungen des MySQL-Root-Benutzers wiederherstellen?

Ich habe versehentlich einige der Berechtigungen von meinem MySQL-Root-Benutzer entfernt, einschließlich der Möglichkeit, Tabellen zu ändern. Kann ich diesen Benutzer auf irgendeine Weise in seinen ursprünglichen Zustand zurückversetzen (mit allen Berechtigungen)?

UPDATE mysql.user SET Grant_priv = 'Y', Super_priv = 'Y' WHERE User = 'root';
# MySQL returned an empty result set (i.e. zero rows).
FLUSH PRIVILEGES ;
# MySQL returned an empty result set (i.e. zero rows).


#1045 - Access denied for user 'root'@'localhost' (using password: YES)
GRANT ALL ON *.* TO 'root'@'localhost'
105
Steven

Wenn der GRANT ALL funktioniert nicht, versuchen Sie:

  1. Stoppen Sie mysqld und starten Sie es mit --skip-grant-tables Möglichkeit.
  2. Stellen Sie eine Verbindung zum mysqld Server her, indem Sie einfach: mysql (d. H. No -p Option und Benutzername sind möglicherweise nicht erforderlich).
  3. Setzen Sie die folgenden Befehle im mysql-Client ab:

    UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';

    FLUSH PRIVILEGES;

Danach solltest du in der Lage sein GRANT ALL ON *.* TO 'root'@'localhost'; und es funktioniert.

143
DMI

Wenn Sie Ihren Benutzer root versehentlich gelöscht haben, können Sie Folgendes tun:

  1. Beenden Sie den MySQL-Dienst
  2. Lauf mysqld_safe --skip-grant-tables &
  3. Art mysql -u root -p und drücken Sie die Eingabetaste.
  4. Geben Sie Ihr Passwort ein
  5. Geben Sie in der MySQL-Befehlszeile Folgendes ein: use mysql;

Führen Sie dann diese Abfrage aus:

insert into `user` (`Host`, `User`, `Password`, `Select_priv`, `Insert_priv`, `Update_priv`, `Delete_priv`, `Create_priv`, `Drop_priv`, `Reload_priv`, `Shutdown_priv`, `Process_priv`, `File_priv`, `Grant_priv`, `References_priv`, `Index_priv`, `Alter_priv`, `Show_db_priv`, `Super_priv`, `Create_tmp_table_priv`, `Lock_tables_priv`, `Execute_priv`, `Repl_slave_priv`, `Repl_client_priv`, `Create_view_priv`, `Show_view_priv`, `Create_routine_priv`, `Alter_routine_priv`, `Create_user_priv`, `ssl_type`, `ssl_cipher`, `x509_issuer`, `x509_subject`, `max_questions`, `max_updates`, `max_connections`, `max_user_connections`) 
values('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0','0');

starten Sie dann mysqld neu

EDIT: 6. Oktober 2018

Falls jemand diese Antwort benötigt, habe ich es heute mit innodb_version 5.6.36-82. und 10.1.24-MariaDB versucht und es funktioniert, wenn Sie DIE RÜCKEN ENTFERNEN (keine einzige) Zitate entweder, entfernen Sie sie einfach):

insert into user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv, Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Create_user_priv, ssl_type, ssl_cipher, x509_issuer, x509_subject, max_questions, max_updates, max_connections, max_user_connections) 
values('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0','0');
87
Bipin Bahuguna

ich entferne auch die Rechte von root und Datenbank, die nicht in der MySQL-Konsole angezeigt wurden, als ich ein root-Benutzer war. Daher änderte ich den Benutzer durch mysql>mysql -u 'userName' -p; und Passwort.

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';

FLUSH PRIVILEGES;

nach diesem Befehl werden alle Datenbanken im Stammverzeichnis angezeigt.

Vielen Dank

23
Prabhu
GRANT ALL ON *.* TO 'user'@'localhost' with GRANT OPTION;

Melden Sie sich einfach von root mit dem entsprechenden Passwort an und führen Sie den obigen Befehl einfach für jeden Benutzer aus.

Beispielsweise:

GRANT ALL ON *.* TO 'root'@'%' with GRANT OPTION;
5

Wenn Sie WAMP auf Ihrem lokalen Computer verwenden (mysql Version 5.7.14) Schritt 1: Öffnen Sie die Datei my.ini. Schritt 2: Entfernen Sie das Semikolon und kommentieren Sie diese Zeile 'Skip-Grant-Tables' aus. Schritt 3: Starten Sie mysql neu Server Schritt 4: Starten Sie die mySQL-Konsole Schritt 5:

UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;

Schritt 6: Problem gelöst !!!!

2
Terungwa

Einfach einfügen oder aktualisieren mysql.user mit dem Wert Y in jeder Spalte Berechtigungen.

Gleiche oben.

Vollständige Antwort: http://www.myee.web.id/?p=869

2
user1316095

Ich hatte das Einfügen und Neuladen von Rechten an root verweigert. Nach der Aktualisierung der Berechtigungen funktionierte FLUSH PRIVILEGES nicht (aufgrund fehlender Berechtigungen zum erneuten Laden). Also habe ich debian-sys-maint user unter Ubuntu 16.04 verwendet, um die user.root-Privilegien wiederherzustellen. Sie finden das Passwort von user.debian-sys-maint in dieser Datei

Sudo cat /etc/mysql/debian.cnf
2
Varun Kumar