GNU/Linux >> Znalost Linux >  >> Linux

Chyba při použití GRANT s IDENTIFIKOVANÝM heslem v MySQL

Otázka :Již roky používám IDENTIFIED BY ‚password‘ spolu s příkazem GRANT v mnoha verzích MySQL. Totéž však selhalo v MySQL verze 8.0.26 v mé nové verzi CentOS Stream 8. Níže je kompletní chybová zpráva. V čem by mohl být problém? – 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

Chyba při používání GRANT s IDENTIFIED by password

Tushare, použití hesla IDENTIFIED BY s příkazem GRANT bylo od verze MySQL 5.7.6 zastaralé. To znamená, že musíte použít IDENTIFIED by password s CREATE USER nebo ALTER USER a použít GRANT PRIVILEGES, jak je uvedeno níže:

VYTVOŘTE UŽIVATELE a přiřaďte heslo.

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

Přidat oprávnění pomocí GRANT:

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

Proč tato změna v nejnovější verzi MySQL?

Změna má smysl z následujících důvodů:

  • Pomocí IDENTIFIED BY heslo s oprávněními GRANT nastaví jakékoli heslo zadané jako nové heslo pro účet. Předpokládejme, že pokud již existuje účet s jiným heslem, provedením oprávnění GRANT spolu s heslem IDENTIFIED BY dojde k přepsání stávajícího hesla. Odebrání IDENTIFIED z GRANT tedy znamená, že účet zůstane s heslem, které bylo nastaveno při vytváření.
  • Od verze MySQL 5.7.2 platí, že pokud již účet existuje, je zakázáno IDENTIFIKOVANÉ „heslem“ a mělo by být používáno pouze při vytváření účtu, tj. s CREATE USER nebo ALTER USER .
  • GRANT může vytvořit uživatelský účet, pokud neexistuje.
    • Pokud NO_AUTO_CREATE_USER enabled
      • Pokud účet uvedený ve výpisu GRANT neexistuje, GRANT účet nevytvoří, pokud neprázdné heslo nezadáte pomocí IDENTIFIED BY nebo IDENTIFIED WITH.
    • Pokud je NO_AUTO_CREATE_USER disabled
      • Pokud účet uvedený ve výpisu GRANT neexistuje, GRANT účet vytvoří. To může být nebezpečné, pokud není zadáno žádné heslo pomocí IDENTIFIED BY.

A konečně, GRANT s heslem IDENTIFIED BY bylo ukončeno a uživatelský účet je třeba vytvořit pomocí CREATE USER nebo ALTER USER.

přes StackOverflow.


Linux
  1. SSHPass:Jak SSH na server pomocí skriptu bez hesla (neinteraktivně)

  2. Používáte zalamování slov s Mc?

  3. CHYBA:Výjimka PleskMainDBE

  1. Jak nainstalovat MySQL na Ubuntu 22.04

  2. CHYBA 1045 (28000):Přístup odepřen uživateli 'root'@'localhost' (pomocí hesla:ANO)

  3. Chyba při použití pomocníka pověření Git se svazkem klíčů gnome jako Sudo

  1. Jak nainstalovat MySQL na CentOS 7.x?

  2. Resetujte kořenové heslo MySQL

  3. Chyba hesla Windows 10 u Samba Share