it-swarm.com.de

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)

Benutzer des Befehls zur Kennwortänderung:

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

Vermisse ich etwas

14
Shivu RH

In MySQL 5.7 ist das Feld password in mysql.user Tabellenfeld wurde entfernt, jetzt lautet der Feldname authentication_string.

Wählen Sie zuerst die Datenbank:

mysql> use mysql;

Und dann zeigen Sie die Tabellen:

mysql> show tables;

Sie finden die Tabelle user und sehen ihre Felder:

mysql> describe user;

Sie werden feststellen, dass es kein Feld mit dem Namen password gibt. Das Kennwortfeld heißt authentication_string. Also mach einfach das:

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');
24
Rahul

Die MySQL-Methode zum Ändern des Passworts lautet SET PASSWORD

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

siehe MySQL 5.7 Referenzhandbuch/.../SET PASSWORD Syntax

Die SET PASSWORD-Anweisung 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 das Passwort mit der Anweisung DML aktualisiert wird.

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

Warnung: Dies ist nicht der offizielle und unterstützte Weg. Es kann Probleme verursachen, wenn Sie nicht wissen, was Sie tun. Vergiss nicht FLUSH PRIVILEGES.

Für die meisten Vorgänge, z. B. das Erstellen eines Benutzers, das Ändern seiner Berechtigungen oder das Ändern seines Kennworts, sollten Sie die allgemeinen Anweisungen verwenden. 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 gut in einer MyISAM-feindlichen Umgebung wie einem Galera-Cluster.

Verwenden Sie keine FLUSH PRIVILEGES mehr

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

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

2
Ivanov

_mysqladmin -u user-name password -p "oldpassword" "newpass"_

wenn Sie sich anmelden können, versuchen Sie dies _""_ funktioniert nicht versuchen Sie _''_ einfaches Anführungszeichen

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

1
Mongrel

In meinem Fall

mysql.server start
$ mysql -uroot
mysql> update user set authentication_string=password('123456') where User='root';
mysql> exit;
mysql.server restart (if you not restart , connection will not work.)

Ich denke, Ihr Update-Befehl ist richtig, aber Sie müssen Ihren MySQL-Server neu starten.

0
Jack LI