GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Fehler bei der Verwendung von GRANT mit IDENTIFIED by password in MySQL

Frage :Ich verwende IDENTIFIED BY ‚password‘ zusammen mit der GRANT-Anweisung seit Jahren in vielen MySQL-Versionen. Dasselbe ist jedoch in MySQL-Version 8.0.26 auf meiner neuen CentOS Stream-Version 8 fehlgeschlagen. Unten finden Sie die vollständige Fehlermeldung. Was könnte das Problem sein? – Tushar.

mysql> GRANT ALL PRIVILEGES ON qdb.* TO 'quser'@'localhost' IDENTIFIED BY 'qcuser123';
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 IDENTIFIED BY 'quser123' at line 1

Fehler bei der Verwendung von GRANT mit IDENTIFIED by password

Tushar, die Verwendung des IDENTIFIED BY-Passworts mit der GRANT-Anweisung ist seit MySQL-Version 5.7.6 veraltet. Dies bedeutet, dass Sie IDENTIFIED by password mit CREATE USER oder ALTER USER verwenden und GRANT PRIVILEGES wie unten gezeigt anwenden müssen:

BENUTZER ERSTELLEN und Passwort vergeben.

mysql> CREATE USER 'quser'@'localhost' IDENTIFIED BY 'qc123';
Query OK, 0 rows affected (0.12 sec)

Fügen Sie Berechtigungen mit GRANT hinzu:

mysql> GRANT ALL PRIVILEGES ON qdb.* TO 'quser'@'localhost';
Query OK, 0 rows affected (0.03 sec)

Warum diese Änderung im neusten MySQL?

Die Änderung ist aus folgenden Gründen sinnvoll:

  • Mit IDENTIFIED BY password mit GRANT-Berechtigungen wird jedes angegebene Passwort als neues Passwort für das Konto festlegen. Angenommen, es gibt bereits ein Konto mit einem anderen Passwort, und die Ausführung von GRANT-Privilegien zusammen mit dem IDENTIFIED BY-Passwort überschreibt das vorhandene Passwort. Das Entfernen von IDENTIFIED aus GRANT bedeutet also, dass das Konto mit dem Passwort bleibt, das während der Erstellung festgelegt wurde.
  • Ab MySQL-Version 5.7.2 ist IDENTIFIED by ‘password’ verboten, wenn bereits ein Konto vorhanden ist, und es sollte nur während der Kontoerstellung verwendet werden, d. h. mit CREATE USER oder ALTER USER .
  • GRANT kann ein Benutzerkonto erstellen, falls es noch nicht existiert.
    • Falls NO_AUTO_CREATE_USER enabled
      • Wenn ein in der GRANT-Anweisung angegebenes Konto nicht existiert, kann GRANT kein Konto erstellen, es sei denn, das nicht leere Passwort wird über IDENTIFIED BY oder über IDENTIFIED WITH angegeben.
    • Falls NO_AUTO_CREATE_USER disabled
      • Wenn ein in der GRANT-Anweisung angegebenes Konto nicht existiert, erstellt GRANT das Konto. Dies kann unsicher sein, wenn kein Passwort über IDENTIFIED BY.
      • angegeben wird

Schließlich ist GRANT mit IDENTIFIED BY-Passwort veraltet und das Benutzerkonto muss mit CREATE USER oder ALTER USER erstellt werden.

über StackOverflow.


Linux
  1. SSHPass:SSH-Zugang zu einem Server mit einem Skript ohne Passwort (nicht interaktiv)

  2. Verwenden Sie Notify-Send mit Cron?

  3. So installieren Sie MySQL unter Ubuntu 22.04

  4. Anleitung zum Installieren von MySQL unter Linux

  5. Windows 10-Passwortfehler mit Samba-Freigabe

Verwendung von PHP-FPM mit Apache unter Ubuntu 16.04

So verwenden Sie MySQL mit der Ruby On Rails-Anwendung

So fügen Sie einen neuen MySQL-Benutzer mit GRANT-Berechtigungen hinzu

So setzen Sie das MySQL-Root-Passwort zurück

So installieren Sie MySQL 8.0 auf Ubuntu 18.04

Wie man mit PHP eine Verbindung zu MySQL herstellt