45.1.2.4. Vytváření nových uživatelů a udělování práv

Pro vytváření účtů a přidělování práv slouží příkaz GRANT. Jeho úplná syntaxe je:

GRANT oprávnění (sloupce)
  ON pro_co
    TO účet IDENTIFIED BY 'heslo'
    REQUIRE požadavky_na_šifrování
    WITH volby_pro_udělování_práv

Uživatelé a jejich účty jsou popsány v tabulce user v databázi mysql. Veškerá administrace uživatelů je jen manipulace s touto tabulkou. Pro jednoduchost si uvedeme ukázky některých základních administrativních úkonů.

Vytvoření nového uživatele:

mysql> use mysql
mysql> INSER INTO user (user,host) VALUES ('tomas', 'station.firma.cz');
Query OK, 1 row affected (0.02 sec)
mysql> GRANT ALL ON tomb.* TO tomas IDENTIFIED BY 'heslo123';

Odstranění/zrušení existujícího uživatele provedeme smazáním příslušné řádky v tabulce. Protože uživatelé jsou identifikováni jménem a stroje ze kterého přistupují nesmíme zapomenout do klauzule WHERE uvést omezující podmínku na sloupec host. V opačném případě smažeme všechny záznamy stejného jména, což nemusí být vždy žádoucí.

mysql> DELETE FROM user WHERE user='tomas' AND host='station.firma.cz');
Query OK, 1 row affected (0.15 sec)

Pro změnu hesla uživatel můžeme použít příkaz SET PASSWORD například takto

mysql> SET PASSWORD FOR 'tomas'@'station.firma.cz' = PASSWORD('heslo123');
ERROR 1133: Can't find any matching row in the user table

Nebo můžeme standardním UPDATE přímo změnit odovídající řadek či řádky v tabulce user

mysql> UPDATE user SET password=PASSWORD('heslo123') WHERE user='tomas' AND host='station.firma.cz';
Query OK, 1 row affected (0.06 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> CREATE DATABASE mojedb;
mysql> CREATE USER ja;
mysql> GRANT ALL PRIVILEGES ON mojedb.* TO 'ja'@'%' IDENTIFIED BY 'heslo' WITH GRANT OPTION;