Ich habe versehentlich einige der Berechtigungen von meinem MySQL-Root-Benutzer entfernt, einschließlich der Möglichkeit, Tabellen zu ändern. Gibt es eine Möglichkeit, diesen Benutzer in seinen ursprünglichen Zustand (mit allen Berechtigungen) zurückzusetzen?
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'
mysql
privileges
mysql-error-1045
Steven
quelle
quelle
Antworten:
Wenn das
GRANT ALL
nicht funktioniert, versuchen Sie:mysqld
und starten Sie es mit der--skip-grant-tables
Option neu.mysqld
mit nur: eine Verbindung zum Server hermysql
(dh keine-p
Option, und der Benutzername ist möglicherweise nicht erforderlich).Geben Sie die folgenden Befehle im MySQL-Client ein:
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
Danach sollten Sie in der Lage sein, es auszuführen
GRANT ALL ON *.* TO 'root'@'localhost';
und zum Laufen zu bringen .quelle
skip-grant-tables
den[mysqld]
Abschnitt Ihrer MySQL-Konfigurationsdatei hinzu, um ohne Kennwort auf MySQL in der Befehlszeile zuzugreifen.Wenn Sie Ihren
root
Benutzer 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:
Starten Sie dann die mysqld neu
EDIT: 6. Oktober 2018
Falls jemand diese Antwort benötigt, habe ich sie heute mit innodb_version 5.6.36-82.0 und 10.1.24-MariaDB ausprobiert und sie funktioniert, wenn Sie die BACKTICKS ENTFERNEN (auch keine einfachen Anführungszeichen, entfernen Sie sie einfach):
quelle
mysqld.exe
imbin
Ordner, nichtmysqld_safe.exe
. Was meinst du mit "mysqld_safe"?mysqld_safe
, führen Sie einfach die normale mysqld-Binärdatei aus:mysqld.exe --skip-grant-tables
ERROR 1054 (42S22): Unknown column 'Password' in 'field list'
Ich entferne auch die Berechtigungen von Root und Datenbank, die nicht in der MySQL-Konsole angezeigt werden, als ich ein Root-Benutzer war. Daher habe ich den Benutzer um
mysql>mysql -u 'userName' -p;
und das Kennwort geändert .Nach diesem Befehl werden alle Datenbanken im Stammverzeichnis angezeigt.
Vielen Dank
quelle
Ich hatte die Berechtigungen zum Einfügen und erneuten Laden in root verweigert. Nach dem Aktualisieren der Berechtigungen funktionierte FLUSH PRIVILEGES nicht (aufgrund fehlender Berechtigungen zum erneuten Laden). Also habe ich den Benutzer debian-sys-wart unter Ubuntu 16.04 verwendet, um die Berechtigungen für user.root wiederherzustellen. Das Passwort von user.debian-sys-wart finden Sie in dieser Datei
quelle
Melden Sie sich einfach von root mit dem entsprechenden Kennwort an und führen Sie den obigen Befehl einfach für den Benutzer aus.
Beispielsweise:
quelle
Fügen Sie einfach in jede Spaltenberechtigung einen
mysql.user
Wert ein oder aktualisieren Sie ihnY
.quelle
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 den Kommentar zu dieser Zeile 'Skip-Grant-Tabellen', indem Sie das Semikolon entfernen Server Schritt 4: Starten Sie die mySQL-Konsole. Schritt 5:
Schritt 6: Problem gelöst !!!!
quelle