W bazie danych MySQL polecenie CREATE USER umożliwia
Pytanie z egzaminu CKE, styczeń 2020 (arkusz E.14-SG-20.01).
Polecenie CREATE USER umożliwia utworzenie użytkownika, np. CREATE USER 'jan'@'localhost' IDENTIFIED BY 'haslo'. Nowe konto może się zalogować, ale nie ma jeszcze żadnych praw do baz danych. Uprawnienia nadaje się osobnym poleceniem GRANT, np. GRANT SELECT ON sklep.* TO 'jan'@'localhost'. Do zapamiętania podział zadań: CREATE USER zakłada konto, GRANT daje prawa, REVOKE je odbiera, DROP USER usuwa konto. Rozdzielenie tych kroków pozwala najpierw utworzyć konto, a potem nadać mu dokładnie te uprawnienia, których potrzebuje. Nazwa konta w MySQL składa się z nazwy użytkownika i hosta, z którego może się łączyć, np. 'jan'@'localhost'. Ten sam login z innym hostem to dla serwera inne konto.
Najczęstszy błąd to przekonanie, że CREATE USER od razu nadaje prawa do bazy. Tak nie jest: konto po utworzeniu ma tylko możliwość zalogowania się, a dostęp do danych trzeba przyznać poleceniem GRANT. Informacje o istniejącym użytkowniku i jego uprawnieniach wyświetla SHOW GRANTS albo zapytanie do tabeli mysql.user. Hasło istniejącego konta zmienia się poleceniem ALTER USER albo SET PASSWORD. Skoro CREATE USER wyłącznie zakłada konto, poprawny jest krótki opis: utworzenie użytkownika. Opis z nadawaniem praw wydaje się pełniejszy, ale nie odpowiada działaniu polecenia. W MySQL 8 nie da się nawet nadać praw poleceniem GRANT kontu, które nie istnieje, więc najpierw wykonuje się CREATE USER, a dopiero potem GRANT. Utworzenie konta i nadanie mu uprawnień to dwa oddzielne kroki, każdy z własnym poleceniem.