Ich wollte auf meinem PC (mit Windows 8.1 x64) nur den MySQL-Server haben, ohne Workbench oder so. Also habe ich das .zipArchiv 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 mysqlDatenbank information_schema. Also habe ich folgendes ausgeführt:
mysql_upgrade.exe --upgrade-system-tables
Und mysqlDatenbanken wurden erstellt. Aber zusammen mit dem Root-Benutzer passierte etwas, weil ich nicht mysqlmehr 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 mysqlohne 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.exeunter 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-tablesOption 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 --initializeirgendwie 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.errDatei 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 -pmit einem temporären Passwort her.Ändern Sie das temporäre Passwort:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NEWPASSWORD';