Ich habe meinen Root-Benutzer aus unserer Datenbank gesperrt. Ich muss alle Berechtigungen an den Root-Benutzer zurückgeben. Ich habe mein Passwort und kann mich bei MySQL anmelden. Der root-Benutzer hat jedoch nicht alle Berechtigungen.
Ich hatte das gleiche Problem wie der Titel dieser Frage. Wenn also jemand anderes googelt, möchte ich MySql im 'Skip-Grant-Tables'-Modus unter Windows starten.
Stoppen Sie den MySQL-Dienst über die Administrator-Tools Dienste.
Ändern der my.ini-Konfigurationsdatei (unter Annahme von Standardpfaden)
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
oder für MySQL-Version> = 5.6
C:\ProgramData\MySQL\MySQL Server 5.6\my.ini
Fügen Sie in der SERVER-Sektion unter [mysqld] die folgende Zeile hinzu:
skip-grant-tables
so dass du hast
# SERVER SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this
# file.
#
[mysqld]
skip-grant-tables
Starten Sie den Dienst erneut und Sie sollten sich ohne Kennwort bei Ihrer Datenbank anmelden können.
Wie Sie die Kontrolle über den Root-Benutzer in MySQL wieder übernehmen können.
GEFAHR: RISIKO-BETRIEB
Bearbeiten Sie die my.cnf
-Datei mit.
Sudo vi /etc/my.cnf
Zeile zum mysqld-Block hinzufügen. *
skip-grant-tables
Speichern und schließen.
Starten Sie den MySQL-Dienst neu.
service mysql restart
Überprüfen Sie den Servicestatus.
service mysql status
Verbinden Sie sich mit MySQL.
mysql
Verwenden der Hauptdatenbank.
use mysql;
Definieren Sie das Benutzer-Root-Passwort neu.
UPDATE user SET `authentication_string` = PASSWORD('myNuevoPassword') WHERE `User` = 'root';
Bearbeiten Sie die Datei my.cnf.
Sudo vi /etc/my.cnf
Zeile löschen.
skip-grant-tables
Speichern und schließen.
Starten Sie den MySQL-Dienst neu.
service mysqld restart
Überprüfen Sie den Servicestatus.
service mysql status
Verbindung zur Datenbank herstellen.
mysql -u root -p
Geben Sie ein neues Kennwort ein, wenn Sie dazu aufgefordert werden.
Diese Aktion ist sehr gefährlich, sie ermöglicht es jedem, ohne Benutzer und Passwort eine Verbindung zu allen Datenbanken herzustellen. Es muss sorgfältig verwendet werden und muss schnell zurückgesetzt werden, um Risiken zu vermeiden.
Auf dem Linux-System können Sie Folgendes tun (Sollte für andere Betriebssysteme ähnlich sein)
Prüfen Sie, ob der MySQL-Prozess läuft:
Sudo service mysql status
Wenn Sie run ausführen, stoppen Sie den Prozess: (Stellen Sie sicher, dass Sie das gesamte mysql-Tool schließen.)
Sudo service mysql stop
Wenn Sie Probleme mit dem Anhalten haben, gehen Sie wie folgt vor
Prozess suchen: ps aux | grep mysqld
Prozess abbrechen: kill -9 process_id
Starten Sie nun mysql im abgesicherten Modus mit Skip Grant
Sudo mysqld_safe --skip-grant-tables &
Wenn Sie den mysql 5.6-Server verwenden und Probleme mit C:\Program Files\MySQL\MySQL Server 5.6\my.ini
haben:
Sie sollten zu C:\ProgramData\MySQL\MySQL Server 5.6\my.ini
gehen.
Sie sollten skip-grant-tables
hinzufügen und benötigen dann kein Passwort.
# SERVER SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this
# file.
#
# server_type=3
[mysqld]
skip-grant-tables
Hinweis: Wenn Sie mit skip-grant-tables
fertig sind, sollten Sie Ihre Datei von C:\ProgramData\MySQL\MySQL Server 5.6\my.ini
wiederherstellen.
Nachdem ich viele Dinge ausprobiert habe, hat das für mich funktioniert:
Sudo mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';
Also verwenden wir Sudo, um sich in mysql als root anzumelden, ohne ein Passwort zu benötigen. Dann aktualisieren wir einfach das Passwort von root.
Danach habe ich mysqld
neu gestartet:
Sudo service mysql restart
Und die newpassword
-Anmeldung ist root!
Verwenden Sie den folgenden Befehl (beachten Sie das "d"): mysqld --skip-grant-tables
wenn Sie mit Apple MacBook OSX
laufen, dann:
my.cnf
. (Für mich wurde es @ /Applications/XAMPP/xamppfiles/etc
platziert. Sie können nur suchen, wenn Sie Nicht finden können).my.cnf
-Datei in einem beliebigen Texteditor."skip-grant-tables"
[mysqld]
(ohne Anführungszeichen) hinzu und speichern Sie die Datei.skip-grant-tables
.Mach, was du jetzt willst !!
PS: Bitte entfernen Sie skip-grant-tables
aus der my.cnf
-Datei, sobald Sie mit dem, was Sie tun möchten, fertig sind.
Führen Sie den folgenden Befehl in der Konsole aus, um die Überprüfung der Benutzertabelle zu überspringen, während Sie die mysql-Datenbank über die Eingabeaufforderung starten
mysqld -skip-grant-tables
wenn dies eine Windows-Box ist, ist es am einfachsten, die Server anzuhalten, der mysql-Konfigurationsdatei Überspringtabellen hinzuzufügen und den Server neu zu starten.
wenn Sie Ihre Berechtigungsprobleme behoben haben, wiederholen Sie die obigen Schritte, entfernen Sie jedoch die Option zum Überspringen von Berechtigungen.
wenn Sie nicht wissen, wo sich Ihre Konfigurationsdatei befindet, melden Sie sich bei mysql send SHOW VARIABLES LIKE '%config%'
an und eine der zurückgegebenen Zeilen zeigt Ihnen, wo sich Ihre Konfigurationsdatei befindet.
Ich bin in Windows 10 und verwende den WAMP64-Server. Es wurde nach my.cnf
und my.ini
gesucht. my.ini
in C:\wamp64\bin\mariadb\mariadb10.2.14
gefunden.
Befolgen Sie die Anweisungen der Kollegen:
my.ini
in einem Texteditor geöffnet, nach [mysqld]
gesucht'skip-grant-tables'
am Ende des [mysqld]
-Abschnitts hinzugefügt (aber innerhalb des Abschnitts)skip-grant-tables
angezeigtALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';
ein.my.ini
die Zeile 'skip-grant-tables'
und speichern Sie die DateiNun können Sie das neue Passwort eingeben. Danke an alle Antworten hier.
Bearbeiten Sie die Datei my.ini, fügen Sie skip-grant-tables hinzu und starten Sie Ihren Mysql-Server erneut:
[mysqld]
port= 3306
socket = "C:/xampp/mysql/mysql.sock"
basedir = "C:/xampp/mysql"
tmpdir = "C:/xampp/tmp"
datadir = "C:/xampp/mysql/data"
pid_file = "mysql.pid"
# enable-named-pipe
key_buffer = 16M
max_allowed_packet = 1M
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log_error = "mysql_error.log"
skip-grant-tables
# Change here for bind listening
# bind-address="127.0.0.1"
# bind-address = ::1