Wie ändere ich das MySQL-Root-Passwort mit MySQL v5.7?

Wie ändere ich das MySQL-Root-Passwort mit MySQL v5.7?

Aktuelle Umgebung:

mysql> show variables like "%version%";
+-------------------------+------------------------------+
| Variable_name           | Value                        |
+-------------------------+------------------------------+
| innodb_version          | 5.7.13                       |
| protocol_version        | 10                           |
| slave_type_conversions  |                              |
| tls_version             | TLSv1,TLSv1.1                |
| version                 | 5.7.13                       |
| version_comment         | MySQL Community Server (GPL) |
| version_compile_machine | x86_64                       |
| version_compile_os      | Linux                        |
+-------------------------+------------------------------+
8 rows in set (0.01 sec)

Befehl zum Ändern des Passworts Benutzer:

mysql> update user set password=PASSWORD("XXXX") where user="root";
ERROR 1054 (42S22): Unknown column 'password' in 'field list'

Übersehe ich etwas?

Antwort1

In MySQL 5.7 wurde das passwordFeld im mysql.userTabellenfeld entfernt, jetzt lautet der Feldname authentication_string.

Wählen Sie zunächst die Datenbank aus:

mysql> use mysql;

Und dann zeigen Sie die Tabellen:

mysql> show tables;

Sie finden die userTabelle und sehen ihre Felder:

mysql> describe user;

Sie werden feststellen, dass es kein Feld mit dem Namen gibt . passwordDas Kennwortfeld heißt authentication_string. Gehen Sie also einfach wie folgt vor:

update user set authentication_string=password('XXXX') where user='root';

Wie von @Rui F Ribeiro vorgeschlagen, können Sie alternativ Folgendes ausführen:

mysql> SET PASSWORD FOR 'root' = PASSWORD('new_password');

Antwort2

Die MySQL-Methode zum Ändern des Passworts istSET PASSWORD

SET PASSWORD FOR 'root' = PASSWORD('new_password');

sehenMySQL 5.7 Referenzhandbuch / ... / SET PASSWORD-Syntax

Die Anweisung SET PASSWORD weist einem MySQL-Benutzerkonto ein Kennwort zu, das entweder als Klartext (unverschlüsselt) oder als verschlüsselter Wert angegeben wird:

'auth_string' represents a cleartext password.

'hash_string' represents an encrypted password.

Die akzeptierte Antwort von Rahul zeigt, wie man das Passwort mit DMLeiner Anweisung aktualisiert.

update user set authentication_string=password('XXXX') where user='root';

Achtung: Dies ist nicht die offizielle und unterstützte Methode. Es kann zu Problemen führen, wenn Sie nicht wissen, was Sie tun. Vergessen Sie nicht FLUSH PRIVILEGES:

Für die meisten Vorgänge, wie das Erstellen eines Benutzers, das Ändern seiner Berechtigungen oder das Ändern seines Passworts, werden Sie die High-Level-Anweisungen verwenden wollen. Sie sind nicht nur einfacher zu verwenden und mit einer größeren Anzahl von MySQL-Versionen kompatibel, sondern verhindern auch, dass Sie Fehler machen (denken Sie natürlich daran, den SQL-Modus „NO_AUTO_CREATE_USER“ einzurichten). Sie funktionieren normalerweise sogar in einer MyISAM-feindlichen Umgebung wie einem Galera-Cluster gut.

Beenden Sie die Verwendung von FLUSH PRIVILEGES

Bitte verwenden Sie GRANT, REVOKE, SET PASSWORD, oder RENAME USERund keine direkten DML-Anweisungen.

Update: SET PASSWORD ... = PASSWORD('auth_string') Syntax istveraltet ab MySQL 5.7.6und wird in einer zukünftigen MySQL-Version entfernt.

Antwort3

mysqladmin -u user-name password -p "oldpassword" "newpass"

Wenn Sie sich anmelden können, versuchen Sie dies. ""Es funktioniert nicht. Versuchen Sie es mit ''einem einfachen Anführungszeichen.

update user set password=PASSWORD("newpass") where User='ENTER-USER-NAME-HERE';

Antwort4

Für dieses Problem habe ich eine einfache und grobe Methode verwendet, den Feldnamen in Passwort umzubenennen. Der Grund dafür ist, dass ich die Mac Navicat Premium-Software verwende. Bei der visuellen Bedienung tritt ein Fehler auf: Unbekannte Spalte „Passwort“ in „Feldliste“. Die Software selbst verwendet Passwörter, sodass ich nicht einfach arbeiten kann. Daher gehe ich in die Datenbank-Befehlszeile und führe aus:

Use mysql;

Und ändern Sie dann den Feldnamen:

ALTER TABLE user CHANGE authentication_string password text;

Im Grunde normal.

verwandte Informationen