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 mysqlmysql>
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;