CREATE USER 'anna'@'localhost' IDENTIFIED BY '54RTu8'; W języku SQL wydano kwerendę, niestety jej wykonanie nie powiodło się i wystąpił błąd: #1396 -...
CREATE USER 'anna'@'localhost' IDENTIFIED BY '54RTu8';W języku SQL wydano kwerendę, niestety jej wykonanie nie powiodło się i wystąpił błąd: #1396 - Operation CREATE USER failed for 'anna'@'localhost'. Powodem takiego zachowania bazy danych może być
CREATE USER to standardowe polecenie MySQL i MariaDB.Pytanie z egzaminu CKE, czerwiec 2023 (arkusz EE.09-SG-23.06).
Błąd #1396 „Operation CREATE USER failed” pojawia się, gdy konto o podanej nazwie i hoście już istnieje. Para 'anna'@'localhost' jest jednoznacznym identyfikatorem konta w MySQL, więc drugie konto z tą samą parą nie może powstać, nawet z innym hasłem.
Rozwiązania są trzy: sprawdzić konta zapytaniem SELECT user, host FROM mysql.user;, użyć CREATE USER IF NOT EXISTS, które przy istniejącym koncie zgłasza tylko ostrzeżenie, albo zmienić hasło istniejącego konta przez ALTER USER. Ten sam błąd zdarza się po nieudanym DROP USER, gdy w tabelach uprawnień zostały ślady konta - wtedy pomaga FLUSH PRIVILEGES;.
Zbyt słabe hasło to realny powód odrzucenia konta, gdy na serwerze działa komponent sprawdzający hasła (validate_password). Serwer zgłasza wtedy jednak inny błąd, który mówi wprost o niespełnionych wymaganiach hasła. Do tego hasło 54RTu8 zawiera cyfry oraz wielkie i małe litery.
CREATE USER to standardowe polecenie MySQL i MariaDB, dostępne od lat. Polecenie nieznane serwerowi kończy się błędem składni, a nie komunikatem o nieudanej operacji.
Nieprawidłowa składnia ma w MySQL osobny kod #1064 i komunikat „You have an error in your SQL syntax”. Tu składnia jest poprawna: nazwa i host w apostrofach, IDENTIFIED BY z hasłem, średnik na końcu. Komunikat #1396 oznacza, że serwer polecenie zrozumiał, ale nie mógł wykonać - konto anna już istnieje.
Warto więc najpierw przeczytać kod błędu - on wskazuje rodzaj problemu.