Chcem vytvoriť nového používateľa v MySQL a dať mu plný prístup len do jednej databázy, povedzme dbTest
, ktorú vytvorím príkazom ako create database dbTest;
. Aké príkazy MySQL by sa na to dali použiť?
Skúste vytvoriť používateľa takto:
CREATE USER 'user'@'hostname';
Skúste mu takto udeliť prístup do databázy dbTest
:
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
Ak spúšťate kód/stránku pristupujúcu k MySQL na tom istom počítači, názov hostiteľa bude localhost.
Teraz rozpis.
GRANT
- Tento príkaz sa používa na vytváranie používateľov a udeľovanie práv k databázam, tabuľkám atď.
ALL PRIVILEGES
(Všetky práva) - Týmto príkazom sa používateľovi udelia všetky štandardné práva. To však nezahŕňa oprávnenie používať príkaz GRANT.
dbtest.*
- Toto je príkaz pre MySQL, aby tieto práva použila na použitie v celej databáze dbtest. Ak chcete, môžete * nahradiť konkrétnymi názvami tabuliek alebo rutinami ukladania.
TO 'user'@'hostname'
- 'user' je užívateľské meno používateľského účtu, ktorý vytvárate. Poznámka: Musíte tam mať jednoduché úvodzovky. 'hostname' hovorí MySQL, z akých hostiteľov sa môže používateľ pripojiť. Ak ho chcete mať len z toho istého počítača, použite localhost
IDENTIFIED BY 'password'
- Ako ste si domysleli, nastavuje heslo pre daného používateľa.
Prihláste sa do MySQL:
mysql -u root
Teraz vytvorte a udeľte
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
Prípadne, ak chcete len udeliť úplný neobmedzený prístup k databáze (napr. na lokálnom počítači pre testovaciu inštanciu, môžete udeliť prístup anonymnému používateľovi, napr. takto:
GRANT ALL PRIVILEGES ON dbTest.* To ''@'hostname'
Toto je v poriadku pre nevyžiadané údaje vo vývoji. Nerobte to s ničím, na čom vám záleží.