Felhasználók és jogosultságok
Felhasználói fiókokat és hozzáféréseiket az a felhasználó kezelhet, akinek van globális CREATE USER és GRANT OPTIONS jogosultsága. A felhasználó csak olyan szintű és típusú jogosultságokat adhat meg, melyhez neki magának is van jogosultsága.
Felhasználó létrehozása új felhasználót a CREATE USER paranccsal hozunk létre: CREATE USER 'felhasznalo'@'localhost' IDENTIFIED BY 'jelszo';
Felhasználó törlése Felhasználói fiókot és jogosultságait a DROP USER paranccsal törlünk: DROP USER 'felhasznalo'@'localhost';
Az IDENTIFIED BY opció elhagyható, ez esetben bárki csatlakozhat a kiszolgálóhoz, ha ismeri a felhasználónevet, jelszó megadása nélkül.
Jelszó változtatás Jelszót utólag megadni vagy változtatni a SET PASSWORD paranccsal lehet. Saját jelszó megváltoztatása: SET PASSWORD = PASSWORD('jelszo');
Más felhasználó jelszavának megváltoztatásához SET PASSWORD FOR 'felhasznalo'@'localhost' = PASSWORD('jelszo');
Felhasználói fiókhoz jogosultságokat a GRANT és a REVOKE parancsokkal tudunk hozzárendelni és visszavonni. A jogosultságok négy különböző hatókörrel rendelkezhetnek: rutin szintű hatókör (routines/procedures): tárolt rutinok létrehozása, módosítása, törlése vagy végrehajtása. A jogosultság információk a mysql.procs_priv táblában találhatók.
Egy tárolt rutin (stored routine) SQL utasításokat tartalmaz, melyekre a rutin nevével hivatkozhatunk, hasonlóan, mint ahogy programkódban meghívunk egy szubrutint vagy függvényt. Alkalmazzák pl. olyan esetekben, ahol nagy hangsúlyt kell fektetni s biztonságra: a felhasználók csak tárolt rutinokat hajthatnak végre, közvetlen hozzáférésük nincs a táblákhoz.
globális hatókör (global): a szerver összes adatbázisára érvényes jogosultságok. A jogosultságok a mysql.user táblában vannak tárolva. A következő jogosultságok csak globális szinten adhatók: FILE - fájlokhoz való hozzáférés a kiszolgálón, szükséges a LOAD DATA INFILE, SELECT ... INTO OUTFILE SQL utasítások végrehajtásához PROCESS - végrehajtás alatt álló utasítások megtekintése a SHOW PROCESSLIST SQL paranccsal SHOW DATABASES jogosultság az adatbázisok listázásához a SHOW DATABASES SQL paranccsal SHUTDOWN jogosultság az adatbázis leállításához a mysqladmin shutdown paranccsal SUPER pl. a SET GLOBAL SQL utasításhoz
adatbázis hatókör (databases): a jogosultságok az adott adatbázisra érvényesek. A jogosultságok a mysql.host és mysql.db táblákban vannak tárolva tábla hatókör (tables): a jogosultságok az adott táblára érvényesek - a jogosultság információk a mysql.table táblában vannak tárolva.
Tábla szinten a következő jogosultságok adhatók: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX (index létrehozása a táblához), ALTER és GRANT OPTION (jogosultságok beállítása)
oszlop szintű hatókör (columns): a jogosultságok az adott oszlopra érvényesek - a felhasználó csak azon oszlopok adatait olvashatja vagy módosíthatja, helyezhet be az oszlopba adatot, melyekhez van hozzáférése. A jogosultság információk a mysql.columns_priv táblában találhatók. Oszlop szinten kiadható jogosultságok: SELECT, INSERT és UPDATE
Jogosultságok listázása A jogosultságok teljes listája : SHOW PRIVILEGES
Minden jogosultság megadása felhasznalo-nak minden adatbázisban GRANT ALL PRIVILEGES ON *.* TO 'felhasznalo'@'localhost'; a GRANT ALL PRIVILEGES nem ad GRANT OPTION jogosultságot
GRANT OPTIONjogosultság hozzárendelése felhasznalo-hoz: GRANT GRANT OPTION ON *.* TO 'felhasznalo'@'localhost';
felhasznalo számára olvasási, beillesztési, módosítási, táblazárolási, törlési jog az összes adatbázisban: GRANT SELECT, INSERT, UPDATE, LOCK TABLES, DELETE ON *.* TO 'felhasznalo'@'localhost';
Ugyanezek a jogosultságok csak a nevjegyzek adatbázisra: GRANT SELECT, INSERT, UPDATE, LOCK TABLES, DELETE ON `nevjegyzek`.* TO 'felhasznalo'@'localhost';
SELECT jogosultság adása a nevjegyzek SELECT jogosultság adása a nevjegyzek.szemelyek tábla vezeteknev és keresztnev oszlopaira: GRANT SELECT (vezeteknev, keresztnev) ON nevjegyzek.szemelyek TO 'felhasznalo'@'localhost';
A REVOKE parancs használata hasonló a GRANT használatához, csak az TO helyett FROM-ot kell írnunk:
felhasznalo összes jogosultságának visszavonása minden adatbázisban - a GRANT OPTION jogosultságot az ALL PRIVILEGES nem érinti: REVOKE ALL PRIVILEGES ON *.* FROM 'felhasznalo'@'localhost';
felhasznalo törlési jogosultságának visszavonása az összes adatbázisban: REVOKE DELETE ON *.* FROM 'felhasznalo'@'localhost';
felhasznalo tábla létrehozási jogosultságának visszavonása a nevjegyzek adatbázisban: REVOKE CREATE ON nevjegyzek.* FROM 'felhasznalo'@'localhost';
Hogy helyesen adtuk-e meg a szükséges jogosultságokat, megnézhetjük a SHOW GRANTS FOR <felhasználó> paranccsal. Ha módosítunk a felhasználói fiókokon és hozzáféréseiken, mindig adjuk ki utána a FLUSH PRIVILEGES parancsot, hogy a változtatások azonnal életbe lépjenek.