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 password
Feld im mysql.user
Tabellenfeld 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 user
Tabelle und sehen ihre Felder:
mysql> describe user;
Sie werden feststellen, dass es kein Feld mit dem Namen gibt . password
Das 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 DML
einer 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 USER
und 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.