it-swarm.com.de

Wie starte ich MySQL mit --skip-grant-tables?

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.

39
Steven

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.

37
tonycoupland

Wie Sie die Kontrolle über den Root-Benutzer in MySQL wieder übernehmen können.

GEFAHR: RISIKO-BETRIEB

  • Starten Sie die Session ssh (wenn möglich mit root).
  • 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.

22
gizmo_marco

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 &
4
Arpit

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.

2
heesang

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!

2
Carles Alcolea

Verwenden Sie den folgenden Befehl (beachten Sie das "d"): mysqld --skip-grant-tables

2
trailing slash

wenn Sie mit Apple MacBook OSX laufen, dann: 

  1. Stoppen Sie Ihren MySQL-Server (falls er bereits läuft). 
  2. Finden Sie Ihre MySQL-Konfigurationsdatei my.cnf. (Für mich wurde es @ /Applications/XAMPP/xamppfiles/etc platziert. Sie können nur suchen, wenn Sie Nicht finden können).
  3. Öffnen Sie die my.cnf-Datei in einem beliebigen Texteditor.
  4. Fügen Sie am Ende des Abschnitts "skip-grant-tables"[mysqld] (ohne Anführungszeichen) hinzu und speichern Sie die Datei.
  5. Starten Sie jetzt Ihren MySQL-Server. Es beginnt mit der Option 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.

2
Saurabh Hooda

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
0
Bad Developer

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.

0
longneck

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:

  1. Öffnet das Schnellstartmenü von Wampserver und wählt 'Stop All Services' aus.
  2. my.ini in einem Texteditor geöffnet, nach [mysqld] gesucht
  3. 'skip-grant-tables' am Ende des [mysqld]-Abschnitts hinzugefügt (aber innerhalb des Abschnitts)
  4. Speichern Sie die Datei und lassen Sie den Editor geöffnet
  5. Wählen Sie im Wampserver-Menü die Option "Dienste neu starten". Es wird eine Warnung bezüglich der Option skip-grant-tables angezeigt
  6. Wählen Sie im Wampserver-Menü MySQL aus, um die Eingabeaufforderung zu öffnen
  7. Es wurde nach einem Passwort gefragt. Drücken Sie einfach die Eingabetaste
  8. Fügen Sie den Befehl ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword'; ein.
  9. Es muss gemeldet werden, dass die Operation erfolgreich war (keine betroffenen Tabellen).
  10. Löschen Sie in der Datei my.ini die Zeile 'skip-grant-tables' und speichern Sie die Datei
  11. Wählen Sie im WampServer-Menü noch einmal Restart Service aus

Nun können Sie das neue Passwort eingeben. Danke an alle Antworten hier.

0
Faltausername

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 
0
Azouz Mohamadi