Új MySQL adatbázis és felhasználó létrehozása

Ha egy-két egyszerű SQL paranccsal szeretnénk egy új adatbázist (és hozzá tartozó felhasználót) létrehozni, az alábbi SQL parancsok lesznek a segítségünkre. Először magát az adatbázist kell létrehoznunk, mivel a felhasználónál erre már hivatkozni fogunk:

1
CREATE DATABASE IF NOT EXISTS `peldadb`;

Természetesen a peldadb helyére a létrehozandó adatbázis nevét kell írni. Fenti parancs azonban csak akkor működik, ha ilyen nevű adatbázis még nem létezik. Létező adatbázist az alábbi paranccsal törölhetünk:

1
DROP TABLE IF EXISTS `peldadb`;

Mindkét esetben szerepel a parancsokban egy feltétel is (exists / not exists), melynek köszönhetően az adatbázis törlését/létrehozását csak abban az esetben kísérli meg a MySQL, ha az létezik / nem létezik. Ezzel kiküszöbölhető, hogy a szkript futása hibával megálljon. Például, ha nem tudjuk, hogy az adott nevű adatbázisból létezik-e már egy korábbi verzió, a feltételes törléssel megpróbálhatjuk eltávolítani a korábbit, mielőtt az új létrehozásával próbálkoznánk. Ha ez a példa kedvéért jogosultság hiányában nem történik meg, a létrehozó parancs még mindig nem fog hibára futni, mivel létező adatbázis esetén nem kísérel meg azonos néven még egyet létrehozni.

Ha az adatbázisunk elkészült, szükségünk lesz egy MySQL felhasználóra is, aki az új adatbázist elérheti, kezelheti. Ennek legegyszerűbb módja az alábbi:

1
GRANT ALL ON peldadb.* TO 'felhasznalonev'@'localhost' IDENTIFIED BY 'jelszo';

Fenti parancsban a peldadb és jelszo az új felhasználó nevére és jelszavára cserélendő. Megjegyzendő, hogy az adatbázis nevénél nincs szükség aposztrófra, míg a felhasználónév, a hosztnév és a jelszó esetében igen. A localhost azon gép neve vagy IP címe, ahonnan az elérést az adott MySQL felhasználó számára engedélyezzük. A példában is szereplő érték esetén a hozzáférés csak akkor érvényes, ha a felhasználó a MySQL adatbázissal azonos gépen próbál kapcsolódni a kiszolgálóhoz. Webtárhely kiszolgálóknál jellemzően ez a helyzet. Ha nem szeretnénk korlátozni a hozzáférést ilyen módon, hosztnévnek a % jelet kell megadni. A külső támadások elkerülése végett azonban ezt csak indokolt esetben használjuk, lustaságból soha!

Az adatbázis neve mögötti . után szereplő * jelentése: az adatbázis összes táblája. Ez nem csak a már létező, de a később létrehozandó táblákhoz is hozzáférést biztosít a felhasználó számára. Fentiek alapján egy példa, ha egy helyi hálózaton lévő gép számára csak a logs táblát szeretnénk elérhetővé tenni:

1
GRANT ALL ON peldadb.logs TO 'felhasznalonev'@'192.168.1.100' IDENTIFIED BY 'jelszo';