Ich wollte auf meinem PC (mit Windows 8.1 x64) nur den MySQL-Server haben, ohne Workbench oder so. Also habe ich das .zip
Archiv von dev.mysql.com/downloads heruntergeladen . Es ist ein Download für Win64 auf x86_64 Version 5.7.9 (MySQL Community Server (GPL)).
Ich habe es als Windows-Dienst installiert, aber es gab nur keine mysql
Datenbank information_schema
. Also habe ich folgendes ausgeführt:
mysql_upgrade.exe --upgrade-system-tables
Und mysql
Datenbanken wurden erstellt. Aber zusammen mit dem Root-Benutzer passierte etwas, weil ich nicht mysql
mehr darauf zugreifen konnte.
Also entschied ich mich, dieses plötzlich erscheinende Passwort zurückzusetzen (weil ich es vorher nicht hatte). Ich habe die folgende Lösung im offiziellen Handbuch gegründet und den Server folgendermaßen gestartet:
mysqld.exe --skip-grant-tables --console
Dann habe ich mysql
ohne Passwort geöffnet :
mysql.exe –u root
Und dann versucht, das Root-Passwort zurückzusetzen:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD(‘passhere');
Aber ich habe diesen Fehler bekommen:
FEHLER 1131 (42000): Sie verwenden MySQL als anonymen Benutzer und anonyme Benutzer dürfen keine Kennwörter ändern. "
Was ist das? Wie bin ich anonym? Alle Befehle wurden cmd.exe
unter dem Administrator ausgeführt.
Was kann ich tun, um das Root-Passwort in dieser Situation zurückzusetzen?
Update 1: Ich habe versucht, den aktuellen Benutzer zu überprüfen:
SELECT USER(), CURRENT_USER();
Das gibt:
+--------+----------------+
| USER() | CURRENT_USER() |
+--------+----------------+
| root@ | @ |
+--------+----------------+
Das ist komisch, weil ich es so angefangen habe mysql.exe -u root
.
Dann habe ich die Benutzertabelle überprüft:
SELECT user FROM mysql.user;
Das gibt:
+-----------+
| user |
+-----------+
| mysql.sys |
+-----------+
Das ist noch seltsamer. Auch gibt es kein Passwortfeld:
SELECT user, password FROM mysql.user;
FEHLER 1054 (42S22): Unbekannte Spalte 'Passwort' in 'Feldliste'
Daher kann ich das Passwort nicht ändern.
Und ich kann keinen neuen Benutzer erstellen:
CREATE USER 'root'@'localhost' IDENTIFIED BY 'passhere';
FEHLER 1290 (HY000): Der MySQL-Server wird mit der
--skip-grant-tables
Option ausgeführt, sodass diese Anweisung nicht ausgeführt werden kann
Jetzt bin ich verloren.
Update 2: Ich denke, ich habe von Anfang an alles falsch gemacht. Anscheinend habe ich mysqld.exe --initialize
irgendwie einen Befehl verpasst .
So habe ich MySQL dank @RolandoMySQLDBA aus dem ZIP-Archiv installiert :
- Archiv auspacken, vorbereiten
my.ini
. - Ausführen
mysqld.exe --initialize
, temporäres Passwort aus der.err
Datei abrufen. Installieren Sie MySQL als Dienst und führen Sie es aus
mysqld --install MySQL --defaults-file="d:/path/to/mysql/my.ini"
Stellen Sie eine Verbindung
mysql -u root -p
mit einem temporären Passwort her.Ändern Sie das temporäre Passwort:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NEWPASSWORD';
password
Spalte umbenannt wurdeauthentication_string
.