Ich versuche, das MySQL-Root-Passwort zu ändern.
Was ich getan habe, ist unten.
- Installieren Sie MySql-5.7.6 ~ .dmg (Community Server) und Workbench.
- Schalten Sie den Server in den OSX-Systemeinstellungen aus.
- Greifen Sie mit der Konsole auf MySQL zu. Der Befehl war
mysqld_safe --skip-grant
- Ausführen
update user set password=password('1111') where user='root';
und eine Fehlermeldung erhalten ->ERROR 1054 (42S22): Unknown column 'password' in 'field list'
.
Zu Ihrer Information, ich habe es getan use mysql;
. Also habe ich die Abfrage in der Benutzertabelle ausgewählt und festgestellt, dass die Kennwortspalte tatsächlich nicht vorhanden ist.
Es ist sehr komisch. Ist es möglich, dass die ursprüngliche Benutzertabelle keine Kennwortspalte enthält?
Wie kann ich ein Passwort ändern, das nicht existiert?
Vielen Dank für Ihre Antwort: D.
UPDATE mysql.user SET authentication_string= 'password' WHERE User = 'root';
Weil das Feld 'Passwort' von mysql entfernt und durch authentication_string ersetzt wurde. Hinweis: Die MySQL-Funktion PASSWORD ('Passwort') basiert auf dem MD5-Algorithmus, der vor langer Zeit mithilfe des Angriffs am Geburtstag geknackt wurde. Die Verwendung gibt also ein falsches Sicherheitsgefühl, da ein Angreifer die von ihm erzeugten Hashes einfach in eine öffentliche Website wie hashkiller.co.uk/md5-decrypter.aspx einfügen und Ihr Nur- Text-Passwort abrufen kann.Antworten:
In MySQL 5.7 wurde das Kennwortfeld im Tabellenfeld mysql.user entfernt. Jetzt lautet der Feldname 'authentication_string'.
Wählen Sie zuerst die Datenbank:
Und dann zeigen Sie die Tabellen:
Sie finden die Benutzertabelle, jetzt sehen wir uns ihre Felder an:
Überraschung! Es gibt kein Feld mit dem Namen 'Passwort', das Passwortfeld heißt 'Authentifizierungszeichenfolge'. Also mach einfach das:
Jetzt wird alles in Ordnung sein.
Im Vergleich zu MySQL 5.6 sind die Änderungen recht umfangreich: Was ist neu in MySQL 5.7?
quelle
use mysql;
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password" where User='root'; # THIS LINE
flush privileges;
quit;
Dieser Fehler tritt auf, wenn Sie das Passwort bei der Installation nicht festgelegt haben, in diesem Fall die MySQL mit dem Unix-Socket-Plugin .
Wenn Sie jedoch den Plugin-Link aus den Einstellungen löschen (Tabelle mysql.user), tritt ein anderes Problem auf. Dies behebt das Problem nicht und führt zu einem weiteren Problem. Um den gelöschten Link zu reparieren und das Passwort ("PWD") festzulegen, gehen Sie wie folgt vor:
1) Laufen Sie mit
--skip-grant-tables
wie oben beschrieben.Wenn es nicht funktioniert, fügen Sie die Zeichenfolge
skip-grant-tables
im Abschnitt[mysqld]
von hinzu/etc/mysql/mysql.conf.d/mysqld.cnf
. Dann mach essudo service mysql restart
.2) Führen Sie
mysql -u root -p
dann aus (ändern Sie "PWD"):dann
sudo service mysql restart
. Überprüfen Sie :mysql -u root -p
.Bevor Sie
restart
diese Zeichenfolge aus der Datei mysqld.cnf entfernen, wenn Sie sie dort festlegen.quelle
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '("MYNEWPASSWORD"), plugin="mysql_native_password"
Eine Falle, in die ich geraten bin, ist, dass es jetzt kein Passwortfeld gibt. Es wurde umbenannt in:
update user set password=PASSWORD("YOURPASSWORDHERE") where user='root';
Sollte jetzt sein:
update user set authentication_string=password('YOURPASSWORDHERE') where user='root';
quelle
Verwenden Sie den
ALTER USER
Befehl, anstatt zu versuchen, eineUSER
Zeile zu aktualisieren . Beachten Sie, dass es möglicherweise mehr als einen Root-Benutzer gibt, da Benutzerentitäten auch von dem Computer qualifiziert werden, von dem aus sie eine Verbindung herstellenhttps://dev.mysql.com/doc/refman/5.7/en/alter-user.html
Beispielsweise.
quelle
Es hat nur bei mir funktioniert, als ich nach den hier genannten Befehlen "gespült" habe. Hier ist die vollständige Liste der Befehle, die ich verwendet habe:
Frühere Antworten funktionieren möglicherweise nicht für spätere MySQL-Versionen. Versuchen Sie diese Schritte, wenn frühere Antworten für Sie nicht funktionierten:
1- Klicken Sie auf das Wamp-Symbol> MySQL> MySQL-Konsole
2- Schreiben Sie nacheinander die folgenden Befehle
quelle
Danke für Ihre Hilfe. Nur für den Fall, dass die Leute immer noch Probleme haben, versuchen Sie dies.
Für MySQL Version 5.6 und darunter
Haben Sie Ihr Mac OS X 'ROOT'-Passwort vergessen und müssen es zurücksetzen? Befolgen Sie diese 4 einfachen Schritte:
sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
sudo /usr/local/mysql/bin/mysql -u root UPDATE mysql.user SET Password=PASSWORD('NewPassword') WHERE User='root'; FLUSH PRIVILEGES; \q
Für MySQL Version 5.7 und höher
'System Prefrences' > MySQL > 'Stop MySQL Server'
sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
sudo /usr/local/mysql/bin/mysql -u root UPDATE mysql.user SET authentication_string=PASSWORD('NewPassword') WHERE User='root'; FLUSH PRIVILEGES; \q
quelle
Für dieses Problem habe ich eine einfache und unhöfliche Methode verwendet, den Feldnamen in Passwort umzubenennen. Der Grund dafür ist, dass ich die Mac Navicat Premium-Software im visuellen Betriebsfehler verwende: Unbekannte Spalte 'Passwort' in 'Feldliste', die Software selbst verwendet Passwort, so dass ich nicht einfach bedienen kann. Daher roote ich in der Datenbankbefehlszeile, führe aus
Und ändern Sie dann den Feldnamen:
Immerhin normal.
quelle
Grundursache: root hat kein Passwort, und Ihre Python-Connect-Anweisung sollte dies widerspiegeln.
Um den Fehler 1698 zu beheben, ändern Sie Ihr Python-Verbindungskennwort in ''.
Hinweis: Durch manuelles Aktualisieren des Benutzerpassworts wird das Problem nicht behoben. Es wird weiterhin der Fehler 1698 angezeigt
quelle
Denken Sie daran, dass das Passwort auch nach dem Neustart von MySQL wie folgt weiter festgelegt werden muss
quelle