GNU/Linux >> Linux Esercitazione >  >> Linux

Errore nell'utilizzo di GRANT con IDENTIFIED by password in MySQL

Domanda :Uso IDENTIFIED BY 'password' insieme all'istruzione GRANT da anni in molte versioni di MySQL. Tuttavia, lo stesso non è riuscito in MySQL versione 8.0.26 sulla mia nuova versione 8 di CentOS Stream. Di seguito è riportato il messaggio di errore completo. Quale potrebbe essere il problema? – 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

Errore durante l'utilizzo di GRANT con IDENTIFIED by password

Tushar, l'uso della password IDENTIFIED BY con l'istruzione GRANT è stato deprecato dalla versione MySQL 5.7.6. Significa che devi utilizzare IDENTIFIED by password con CREATE USER o ALTER USER e applicare GRANT PRIVILEGES come mostrato di seguito:

CREA UTENTE e assegna una password.

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

Aggiungi privilegi utilizzando GRANT:

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

Perché questo cambiamento nell'ultimo MySQL?

La modifica ha senso per i seguenti motivi:

  • Utilizzo di IDENTIFIED BY password con privilegi GRANT imposterà qualsiasi password specificata come nuova password per l'account. Si supponga che se esiste già un account con una password diversa, l'esecuzione dei privilegi GRANT insieme a IDENTIFIED BY password sovrascriverà la password esistente. Quindi rimuovere IDENTIFIED da GRANT significa che l'account rimane con la password impostata durante la creazione.
  • A partire dalla versione MySQL 5.7.2, se esiste già un account, IDENTIFIED by 'password' è vietato e dovrebbe essere utilizzato solo durante la creazione dell'account, ad esempio con CREATE USER o ALTER USER .
  • GRANT può creare un account utente se non esiste.
    • Se NO_AUTO_CREATE_USER enabled
      • Se un account specificato nell'istruzione GRANT non esiste, GRANT non riuscirà a creare un account a meno che la password non vuota non sia specificata tramite IDENTIFIED BY o tramite IDENTIFIED WITH.
    • Se NO_AUTO_CREATE_USER disabled
      • Se un account specificato nell'istruzione GRANT non esiste, GRANT crea l'account. Questo può non essere sicuro se non viene specificata alcuna password tramite IDENTIFIED BY.

Infine, GRANT with IDENTIFIED BY password è stato ritirato e l'account utente deve essere creato utilizzando CREATE USER o ALTER USER.

tramite StackOverflow.


Linux
  1. SSHPass:come eseguire SSH in un server utilizzando uno script senza password (in modo non interattivo)

  2. Utilizzando Notifica-Invia con Cron?

  3. Come installare MySQL su Ubuntu 22.04

  4. Come installare MySQL su Linux

  5. ERRORE 1045 (28000):accesso negato per l'utente 'root'@'localhost' (utilizzando la password:YES)

Utilizzo di PHP-FPM con Apache su Ubuntu 16.04

Come utilizzare MySQL con l'applicazione Ruby On Rails

Come aggiungere un nuovo utente MySQL con autorizzazioni GRANT

Come reimpostare la password di root di MySQL

Come installare MySQL 8.0 su Ubuntu 18.04

Come connettersi a MySQL usando PHP