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'
Wenn der GRANT ALL
funktioniert nicht, versuchen Sie:
mysqld
und starten Sie es mit --skip-grant-tables
Möglichkeit.mysqld
Server her, indem Sie einfach: mysql
(d. H. No -p
Option und Benutzername sind möglicherweise nicht erforderlich).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.
Wenn Sie Ihren Benutzer root
versehentlich gelöscht haben, können Sie Folgendes tun:
mysqld_safe --skip-grant-tables &
mysql -u root -p
und drücken Sie die Eingabetaste.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');
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
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;
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 !!!!
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
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