2019. május 7., kedd

Még egy kis segítség





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

 

Új adatbázis létrehozása fejlesztői gépen
CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;
Új felhasználó létrehozása
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
Jogosultság hozzáadása
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost';
FLUSH PRIVILEGES;
Új tábla létrehozása:
CREATE TABLE pelda (id int, txt text) DEFAULT CHARACTER SET utf8 COLLATE utf8_hungarian_ci





Ú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';
 
 
https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_grant-option 
http://sql.misi.eu/inner/
http://www.sze.hu/~szorenyi/sz03/htm/doc/INNJOIN.htm
http://softwareonline.animare.hu/cikk.aspx?id=3766
https://stackoverflow.com/questions/8696383/difference-between-natural-join-and-inner-join 
https://it-sziget.hu/triggerek-hasznalata-mysql-ben 

Nincsenek megjegyzések:

Megjegyzés küldése

Na írjad ;)