MySQL/Indítási Útmutató

From Gentoo Wiki
< MySQL
Jump to:navigation Jump to:search
This page is a translated version of the page MySQL/Startup Guide and the translation is 100% complete.

Ez az útmutató alapvető utasításokat tartalmaz a felhasználók számára a MySQL Linux rendszeren történő beállításához és használatához.

MySQL használatának a megkezdése

Háttér

A MySQL egy népszerű adatbázis szerver, amelyet különböző alkalmazásokban használnak. Az SQL a (S)tructured (Q)uery (L)anguage rövidítése, amelyet a MySQL más programokkal való kommunikációra használ. Emellett a MySQL saját kibővített SQL-funkcióival további funkcionalitást biztosít a felhasználók számára. Ebben a dokumentumban megvizsgáljuk a kezdeti MySQL telepítést, az adatbázisok és táblázatok beállítását, valamint az új felhasználók létrehozását. Kezdjük a telepítéssel.

MySQL telepítése

Abban az esetben, ha a MySQL specifikus funkcionalitására van szükség, akkor nézze át a MySQL-hez elérhető USE jelölőzászlókat, mielőtt a szoftvercsomagot telepítené:

root #emerge --ask dev-db/mysql

A telepítés befejezése után a következő értesítés jelenhet meg:

CODE MySQL einfo üzenet
You might want to run:
"emerge --config =dev-db/mysql-[version]"
if this is a new install.

Mivel ez egy új telepítés, ezért a parancsot futtatni kell. Amikor a MySQL adatbázis beállításakor a rendszer kéri, nyomja meg az ENTER billentyűt. Ez beállítja a fő MySQL adatbázist, amely adminisztratív információkat tartalmaz, például adatbázisokat, táblázatokat, felhasználókat, jogosultságokat és egyebeket. A beállítás azt javasolja, hogy a root jelszót mielőbb változtassa meg.

root #emerge --config =dev-db/mysql-[version]
 * MySQL DATADIR is /var/lib/mysql
 * Press ENTER to create the mysql database and set proper
 * permissions on it, or Control-C to abort now...
 
   Preparing db table
   Preparing host table
   Preparing user table
   Preparing func table
   Preparing tables_priv table
   Preparing columns_priv table
   Installing all prepared tables
 
   To start mysqld at boot time you have to copy support-files/mysql.server
   to the right place for your system
 
   PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
   To do so, issue the following commands to start the server
   and change the applicable passwords:
 
   /etc/init.d/mysql start
   /usr/bin/mysqladmin -u root -h pegasos password 'new-password'
   /usr/bin/mysqladmin -u root password 'new-password'
   Depending on your configuration, a -p option may be needed
   in the last command. See the manual for more details.
Note
Ha az előző parancs megszakad a localhost-ra állított hostname miatt, akkor változtassa meg a hostname-t egy másik névre, például gentoo. Frissítse a /etc/conf.d/hostname fájlt és indítsa újra a /etc/init.d/hostname szolgáltatást.

Néhány, a MySQL ebuild-től független információ eltávolításra került innen annak érdekében, hogy a dokumentum a lehető legkonzisztensebb maradjon.

Important
A mysql-4.0.24-r2 verziótól kezdve a jelszavak megadására a beállítás fázisa alatt történik meg, ezáltal a root jelszó beírása biztonságosabbá válik.

A beállítószkript már kiírta a szükséges parancsokat a jelszó beállításának érdekében.

OpenRC használata esetén, kérjük, hogy futtassa a következő parancsot:

root #rc-service mysql start
 * Re-caching dependency info (mtimes differ)...
 * Starting mysqld (/etc/mysql/my.cnf) ...        [ ok ]

A systemd használata esetén, kérjük, hogy futtassa a következő parancsot:

root #systemctl restart mysqld.service

A dev-db/mariadb-10.1.18 verziójától kezdve használja a következő parancsot:

root #systemctl restart mariadb.service

Ezt követően állítsa be a root jelszót:

root #/usr/bin/mysqladmin -u root -h localhost password 'new-password'

Most próbáljon meg bejelentkezni a MySQL szerverre, hogy ellenőrizze, vajon sikeresen be állította-e a root jelszót:

user $mysql -u root -h localhost -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4 to server version: 4.0.25
 
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
 
mysql>

A -u kapcsoló beállítja a bejelentkezni kívánt felhasználót. A -h kapcsoló beállítja a hostot. Ez általában localhost lesz, hacsak nem távoli szervert állít be. Végül a -p kapcsoló jelzi a mysql kliensnek, hogy jelszót fog megadni az adatbázis eléréséhez. Figyelje meg a mysql> parancssorát. Itt írja be az összes parancsot. Most, hogy a root felhasználóként vagyunk a mysql parancssorában, elkezdhetjük az adatbázis beállítását.

Important
Az alapértelmezett mysql telepítés fejlesztési rendszerekre van szánva. Érdemes futtatni a /usr/bin/mysql_secure_installation parancsot, hogy biztonságosabb alapértelmezett beállításokat állítson be.

Adatbázis beállítása

Adatbázis létrehozása

Bejelentkeztünk, és megjelent a mysql parancssor. Először nézzük meg, milyen adatbázisokkal rendelkezünk jelen pillanatban. Ehhez használjuk a SHOW DATABASES parancsot.

mysql>SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql    |
| test     |
+----------+
2 rows in set (0.09 sec)
Important
Kérjük, ne feledje, hogy a MySQL parancsokat pontosvesszővel le kell zárni -- ;

Annak ellenére, hogy egy tesztadatbázis már létre lett hozva, mi saját adatbázist fogunk létrehozni. Az adatbázisok a CREATE DATABASE parancs segítségével hozhatóak létre. Létrehozunk egy "gentoo" nevűt.

mysql>CREATE DATABASE gentoo;
Query OK, 1 row affected (0.08 sec)

A válasz arról tájékoztat minket, hogy a parancs hibamentesen végrehajtásra került. Ebben az esetben 1 sor lett módosítva. Ez az utalás a fő mysql adatbázisra vonatkozik, amely az összes adatbázist tartalmazza. Nem kell túlságosan aggódnia a háttér részletek miatt. Az utolsó szám azt mutatja, milyen gyorsan hajtódott végre a lekérdezés. Ellenőrizhetjük, hogy az adatbázis létrehozásra került-e, amennyiben újra lefuttatjuk a SHOW DATABASES parancsot.

mysql>SHOW DATABASES;
+----------+
| Database |
+----------+
| gentoo   |
| mysql    |
| test     |
+----------+
3 rows in set (0.00 sec)

Valóban létrehoztuk az adatbázisunkat. Ahhoz, hogy táblázatokat hozhassunk létre az új gentoo adatbázisunkban, ki kell választanunk azt aktuális adatbázisunkként. Ehhez használjuk a USE parancsot. A USE parancs az adatbázis nevét fogadja, amelyet aktuális adatbázisként kíván használni. Egy másik lehetőség az, hogy a parancssorban a -D kapcsoló után állítja be a nevet. Lépjünk tovább, és váltsunk át a gentoo adatbázisra.

mysql>USE gentoo;
Database changed

Ennek eredményeként most az aktuális adatbázisunk a korábban létrehozott gentoo adatbázisunk. Most, hogy ezt az adatbázist használjuk, elkezdhetünk táblázatokat létrehozni és adatokat elhelyezni bennük.

Táblázatok kezelése MySQL-ben

Táblázat létrehozása

A MySQL struktúrájában adatbázisok, táblázatok, rekordok és mezők találhatók. Az adatbázisok táblázatokat tartalmaznak, a táblázatok rekordokat, a rekordok pedig mezőket, amelyek a tényleges információt tartalmazzák. Ez a struktúra lehetővé teszi a felhasználóknak, hogy kiválasszák, miként szeretnék elérni az információikat. Eddig az adatbázisokkal foglalkoztunk, most térjünk át a táblázatokra. Először is, a táblázatokat hasonlóan lehet listázni, mint az adatbázisokat a SHOW TABLES parancs segítségével. Jelenleg nincsenek táblázatok a gentoo adatbázisunkban, ahogy azt a parancs futtatása is megmutatja:

mysql>SHOW TABLES;
Empty set (0.00 sec)

Ez azt jelenti, hogy táblázatokat kell létrehoznunk. Ehhez használjuk a CREATE TABLE parancsot. Ez a parancs azonban jelentősen eltér az egyszerű CREATE DATABASE parancstól. Ez a parancs egy argumentumlistát vesz fel. Az alábbi formátumú:

CODE CREATE TABLE Syntax
CREATE TABLE [table_name] ([field_name] [field_data_type]([size]));

table_name a létrehozni kívánt táblázatnak a neve. Ebben az esetben hozzunk létre egy developers nevű táblázatot. Ez a táblázat tartalmazza a fejlesztő nevét, email címét és munkakörét.

field_name a mező nevét tartalmazza. Ebben az esetben 3 szükséges név van: name, email és job. Ezenkívül egy PRIMARY KEY mezőt is meghatározunk a könnyű kapcsolat érdekében más táblázatokkal, és minden egyes beszúrásnál automatikusan növekszik. A PRIMARY KEY ajánlott, de nem kötelező, mivel a MySQL belsőleg is nyilvántart egyet. Az indexek, amelyekhez a PRIMARY KEY is tartozik, gyorsabb adatelérést biztosítanak a táblázatok növekedésével.

A field_data_type az, hogy milyen típusú információkat tárolunk. A különböző formátumok megtalálhatóak a MySQL adattípusok oldala leírásban. A mi céljainkhoz a VARCHAR adattípust fogjuk használni minden adatmező számára, és INTEGER típust a kulcs mező számára. A VARCHAR az egyik legegyszerűbb adattípus, amikor szövegekkel dolgozunk.

A size azt jelenti, hogy mennyi adatot tárol egyetlen mező. Ebben az esetben 128 nagyságot fogunk használni. Ez azt jelenti, hogy a mező VARCHAR adatokat tartalmazhat, amelyek 128 bájt hosszúak. Ezt Ön nyugodtan tekintheti 128 karakternek, bár a fent említett oldal egy technikailag részletesebb magyarázatot is nyújt. Most, hogy tudjuk, hogyan fogjuk létrehozni a táblázatot, csináljuk az meg.

mysql>CREATE TABLE developers ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(128), email VARCHAR(128), job VARCHAR(128));
Query OK, 0 rows affected (0.11 sec)

Úgy tűnik, a táblázatunk sikeresen létre lett hozva. Ellenőrizzük a SHOW TABLES parancs segítségével:

mysql>SHOW TABLES;
+------------------+
| Tables_in_gentoo |
+------------------+
| developers       |
+------------------+
1 row in set (0.00 sec)

Itt van a táblázatunk. Azonban úgy tűnik, hogy nem tartalmaz információkat az általunk beállított mezőtípusokról. Ehhez használjuk a DESCRIBE parancsot (rövidítve DESC), amely a táblázat nevét veszi argumentumként. Nézzük meg, mit ad nekünk a developers táblázatunk esetében.

mysql>DESCRIBE developers;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| name  | varchar(128) | YES  |     | NULL    |                |
| email | varchar(128) | YES  |     | NULL    |                |
| job   | varchar(128) | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

Ez megmutatja a különböző mezőket és azok típusait. Ezenkívül néhány extra attribútumot is megjelenít, amelyek túlmutatnak ezen az útmutatón. További információkért nyugodtan tekintse meg a MySQL Reference Manual oldalt. Most már van egy táblázatunk, amivel dolgozhatunk. Most töltsük fel adatokkal.

MySQL adatbázis feltöltése adatokkal

A táblázatot az INSERT parancs segítségével tudjuk feltölteni. Az INSERT parancsnak, hasonlóan a CREATE TABLE parancshoz, szintén meghatározott formátuma van:

CODE INSERT Syntax
INSERT INTO table (col1, col2, ...) VALUES('value1', 'value2', ...);

Ezt a parancsot azért használjuk, hogy egy rekordot szúrjunk be egy táblázatba. A "table" tartalmazza azt a MySQL táblázatot, amelybe az információt be kívánjuk írni. A táblázatnév után következhet az oszlopok listája, amelybe adatokat szeretnénk beszúrni, és a VALUES() tartalmazza azokat az értékeket, amelyeket a táblázatba szeretnénk beszúrni. Az oszlopok listáját Ön elhagyhatja, ha minden egyes mezőbe értéket akar beszúrni, és ha az értékeket ugyanabban a sorrendben írja be, mint amilyen sorrendben az oszlopok meg vannak határozva. Az auto-increment mező esetében egy NULL érték a következő elérhető értéket fogja használni. Ebben az esetben adatokat szeretnénk beszúrni a "developers" táblázatba. Lássuk, hogyan szúrunk be rekordokat:

mysql>INSERT INTO developers VALUES(NULL, 'Joe Smith', 'joesmith@gentoo.org', 'toolchain');
Query OK, 1 row affected (0.06 sec)
## (If you don't know the order of the columns in the table or want to insert an incomplete record)
mysql> INSERT INTO developers (job, name) VALUES('outsourced', 'Jane Doe');
Query OK, 1 row affected (0.01 sec)

Az eredmény szerint a rekord helyesen lett beszúrva. Mi történik, ha több információt szeretnénk bevinni, mint egyetlen rekord? Ekkor kerül előtérbe a LOAD DATA parancs. Ez a parancs rekordokat tölt be egy tabulátorral elválasztott fájlból. Próbáljuk ki ezt úgy, hogy szerkesztünk egy fájlt a home könyvtárunkban a rekordokkal. Ennek a fájlnak a neve records.txt lesz. Itt egy példa:

CODE ~/records.txt
3	John Doe	johndoe@gentoo.org	portage
4	Chris White	chriswhite@gentoo.org	documentation
5	Sam Smith	samsmith@gentoo.org	amd64
Important
Győződjön meg arról, hogy tisztában van az adatokkal, amelyekkel Ön dolgozik. Nagyon veszélyes a LOAD DATA használata, ha bizonytalan a fájl tartalmát illetően!

Most a LOAD DATA parancsnak van egy kissé kiterjesztett definíciója, de mi itt a legegyszerűbb formát fogjuk használni.

CODE LOAD DATA Syntax
LOAD DATA LOCAL INFILE '/path/to/filename' INTO TABLE table;

/path/to/filename az a könyvtár és fájlnév, amelyet használni fogunk. A "table" a táblázatnak a neve. Ebben az esetben a fájlunk ~/records.txt lesz, és a táblázat neve developers.

mysql>LOAD DATA LOCAL INFILE '~/records.txt' INTO TABLE developers;
Query OK, 3 rows affected (0.00 sec)
Records: 3  Deleted: 0  Skipped: 0  Warnings: 0
Important
Ha bármilyen furcsa viselkedést tapasztal, akkor győződjön meg róla, hogy a mezők tabulátorokkal vannak elválasztva. Ha más forrásból illeszti be az információkat a bemeneti fájlba, akkor előfordulhat, hogy a tabulátorokat szóközökre lesznek felcserélve.

Ez jól működött. Azonban ez az eljárás egyszerűen csak rekordokat szúr be, és nem ad semmilyen irányítást a MySQL felett. Számos webalkalmazás használ sql szkripteket a MySQL gyors és egyszerű beállításának az érdekében. Ha sql szkriptet szeretne használni, akkor a mysql-t batch módban kell futtatnia, vagy be kell forrásolnia a fájlt. Íme egy példa a mysql batch módban történő futtatására:

user $mysql -u root -h localhost -p < sqlfile

Ne liberális fejjel képzelegjen, hanem józan ésszel, a valós tényeket alkalmazza gondolkodjon. Mint a LOAD DATA esetében, most is győződjön meg róla, hogy tudja, hogy mit csinál a sqlfile. Ennek elmulasztása veszélyeztetheti az Ön adatbázisát! Egy másik módja ennek elérésére a source parancs használata. Ez a parancs sql fájlból futtatja a mysql parancsokat, miközben a mysql interaktív módban van. Így lehet egy sql fájlt forrásolni:

mysql>source sqlfile;

Ha egy webalkalmazás arra kér Önt, hogy egy sql fájlt futtasson, akkor a fent említett két parancs segítségével elvégezheti ezt a feladatot. A táblázatunkat beállítottuk, tehát hogyan ellenőrizzük le a mezőinket? Ezt lekérdezésekkel végezzük el a táblázatunkban.

MySQL táblázatok böngészése lekérdezések által

A lekérdezések az SQL adatbázisok egyik fő jellemzője. Segítenek, hogy a táblázatainkban tárolt adatokat hasznos információkká alakítsuk át. A legtöbb lekérdezést a SELECT parancs segítségével hajtjuk végre. A SELECT parancs meglehetősen összetett, és ebben a dokumentumban csak a parancs három fő formájával fogunk foglalkozni.

CODE SELECT űrlapok
## (Select all entries in a table)
SELECT * FROM table;
## (Select specific entries in a table)
SELECT * FROM table WHERE field=value;
## (Select specific fields)
SELECT field1,field2,field3 FROM table [WHERE field=value];

Nézzük meg gyorsan az első űrlapot. Ez viszonylag egyszerű, és általános képet ad a táblázatunkról. Futtassuk le, hogy megnézzük, milyen adataink vannak eddig.

mysql>SELECT * FROM developers;
+----+-------------+-----------------------+----------------+
| id | name        | email                 | job            |
+----+-------------+-----------------------+----------------+
|  1 | Joe Smith   | joesmith@gentoo.org   | toolchain      |
|  2 | Jane Doe    | NULL                  | Outsourced job |
|  3 | John Doe    | johndoe@gentoo.org    | portage        |
|  4 | Chris White | chriswhite@gentoo.org | documentation  |
|  5 | Sam Smith   | samsmith@gentoo.org   | amd64          |
+----+-------------+-----------------------+----------------+
5 rows in set (0.00 sec)

Láthatjuk mind az INSERT paranccsal, mind a LOAD DATA paranccsal beszúrt adatokat. Most tegyük fel, hogy csak Chris White rekordját szeretnénk látni. Ezt megtehetjük az alábbiakban bemutatott második SELECT forma használatával.

mysql>SELECT * FROM developers WHERE name = 'Chris White';
+----+-------------+-----------------------+---------------+
| id | name        | email                 | job           |
+----+-------------+-----------------------+---------------+
|  3 | Chris White | chriswhite@gentoo.org | documentation |
+----+-------------+-----------------------+---------------+
1 row in set (0.08 sec)

Ahogy vártuk, a keresett bejegyzés kiválasztásra került. Most tegyük fel, hogy csak a személy munkakörét és email címét szeretnénk tudni, a nevét nem. Ezt megtehetjük a SELECT harmadik formájával, amint ahogy az itt látható.

mysql>SELECT email,job FROM developers WHERE name = 'Chris White';
+-----------------------+---------------+
| email                 | job           |
+-----------------------+---------------+
| chriswhite@gentoo.org | documentation |
+-----------------------+---------------+
1 row in set (0.04 sec)

Ez a kiválasztási módszer sokkal könnyebben kezelhető, különösen nagyobb mennyiségű információ esetén, ahogy azt később látni fogjuk. Jelenleg, mint root mysql felhasználó, korlátlan jogosultságunk van arra, hogy azt tegyünk a MySQL adatbázissal, amit csak akarunk. Szerverkörnyezetben egy ilyen jogosultságokkal rendelkező felhasználó meglehetősen problémás lehet. Annak érdekében, hogy ellenőrizzük, ki mit tehet az adatbázisokkal, jogosultságokat állítunk be.

MySQL jogosultságok

A jogosultságok határozzák meg, hogy a felhasználók milyen hozzáféréssel rendelkeznek az adatbázisokhoz, táblázatokhoz, gyakorlatilag bármihez. Jelenleg a gentoo adatbázisban a MySQL root fiókja az egyetlen, amely hozzáférhet hozzá, a jogosultságok alapján. Most hozzunk létre két általános felhasználót, guest és admin nevűeket, akik hozzáférhetnek a gentoo adatbázishoz és dolgozhatnak a benne lévő információkkal. A guest fiók korlátozott lesz. Csak információt tud majd lekérni az adatbázisból, és ennyi. Az admin ugyanakkora kontrollal fog rendelkezni, mint a root, de csak a gentoo adatbázisban (nem a fő mysql adatbázisokban).

Felhasználók létrehozása

A CREATE USER SQL utasítás felhasználókat hoz létre és beállítja az autentikációs módszert, általában jelszóval, de más bővítmények is elérhetők lehetnek.

Egy példa a CREATE USER parancsra a következő:

CODE CREATE USER szintaxis
CREATE USER '[user]'@'[host]' IDENTIFIED BY '[password]';

Az user a felhasználó neve, és a host az a gép, amelyről a felhasználó hozzáfér. A legtöbb esetben ez a localhost lesz. Például a felhasználóink létrehozásához:

(admin)

mysql>CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';

(guest)

mysql>CREATE USER 'guest'@'localhost' IDENTIFIED BY 'password';
Important
A host of 'localhost' does not mean DNS localhost (127.0.0.1) to MySQL. Instead, it refers to the UNIX socket connection and not TCP/IP.

Jogosultságok megadása a GRANT használatával

Nézzük meg közelebbről a GRANT parancs egyszerűsített formátumát.

CODE GRANT szintaxis
GRANT [privileges] ON database.* TO '[user]'@'[host]';

Először is meg kell határoznunk azokat a jogosultságokat, amelyeket ki szeretnénk osztani. Az eddig tanultak alapján itt van néhány jogosultság, amelyeket beállíthat:

  • ALL - Teljes jogosultságot biztosít az adatbázis számára.
  • CREATE - Lehetővé teszi a felhasználóknak, hogy táblázatokat hozzanak létre.
  • SELECT - Lehetővé teszi a felhasználóknak, hogy lekérdezéseket végezzenek a táblázatokban.
  • INSERT - Lehetővé teszi a felhasználóknak, hogy adatokat szúrjanak be egy táblázatba.
  • SHOW DATABASES - Lehetővé teszi a felhasználóknak, hogy megtekintsék az adatbázisok listáját.
  • USAGE - A felhasználó nem rendelkezik jogosultságokkal.
  • GRANT OPTION - Lehetővé teszi a felhasználóknak, hogy jogosultságokat adjanak meg.
Note
Ha MySQL-t használ adatközlésre egy webalkalmazás számára, akkor a CREATE, SELECT, INSERT (itt tárgyalt), DELETE és UPDATE (további információkért tekintse meg a MySQL referencia kézikönyv - GRANT és REVOKE szintaxis részt) az egyetlen jogosultság, amire valószínűleg szüksége lesz. Sokan hibáznak azzal, hogy minden jogosultságot megadnak, amikor valójában nincs rá szükség. Ellenőrizze az alkalmazásfejlesztőknél, hogy ezek a jogosultságok okozhatnak-e problémát az általános működés során.

Az admin felhasználónk számára az ALL megfelelő lesz. A guest felhasználó esetében a SELECT elegendő lesz az olvasási hozzáféréshez. A database az az adatbázis, amelyhez ezeket a jogosultságokat szeretnénk hozzárendelni. Ebben a példában a gentoo az adatbázis neve. A .\* jelentése az összes táblázat. Ha szeretné, beállíthat hozzáférési jogosultágot egyedi táblázatokhoz is.

mysql>GRANT ALL ON gentoo.* TO 'admin'@'localhost';
mysql>GRANT SELECT ON gentoo.* TO 'guest'@'localhost';

Most, hogy létrehoztuk a felhasználókat, teszteljük le őket. Először lépjünk ki a mysql-ból a normál parancssorba beírva a quit parancsot:

mysql>quit

Most visszatértünk a normális parancssorhoz. Mivel beállítottuk a felhasználókat, lássuk, mire képesek.

Felhasználói jogosultságok tesztelése

Most megpróbálunk bejelentkezni a guest felhasználóval. Jelenleg a guest felhasználónak csak SELECT jogosultsága van. Ez lényegében azt jelenti, hogy csak keresni tud, és semmi mást. Jelentkezzen be a guest fiókkal.

user $mysql -u guest -h localhost -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6 to server version: 4.0.25
 
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
 
mysql>

Most tesztelnünk kell a felhasználói korlátozás(oka)t. Váltsunk a gentoo adatbázisra:

mysql>USE gentoo;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed

Most próbáljunk meg olyasmit tenni, amire nincs jogosultságunk. Kíséreljünk meg létrehozni egy táblázatot.

mysql>CREATE TABLE test (test VARCHAR(20), foobar VARCHAR(2));
ERROR 1044: Access denied for user: 'guest@localhost' to database 'gentoo'

Amint látható, ez a művelet nem sikerül, mivel a felhasználónk nem rendelkezik a megfelelő hozzáféréssel. Azonban egy hozzáférést megadtunk: a SELECT utasítást. Próbáljuk ki:

mysql>SELECT * FROM developers;
+-------------+-----------------------+----------------+
| name        | email                 | job            |
+-------------+-----------------------+----------------+
| Joe Smith   | joesmith@gentoo.org   | toolchain      |
| John Doe    | johndoe@gentoo.org    | portage        |
| Chris White | chriswhite@gentoo.org | documentation  |
| Sam Smith   | samsmith@gentoo.org   | amd64          |
| Jane Doe    | NULL                  | Outsourced job |
+-------------+-----------------------+----------------+
5 rows in set (0.00 sec)

A parancs sikeresen lefutott, és betekintést nyerhettünk a felhasználói jogosultságok működésébe. Létrehoztunk egy admin fiókot is. Ezt azért hoztuk létre, hogy bemutassuk, hogy még a teljes jogosultságokkal rendelkező felhasználóknak is lehetnek korlátozásaik. Lépjen ki a MySQL-ból, és jelentkezzen be az admin fiókkal.

mysql>quit
Bye
user $mysql -u admin -h localhost -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7 to server version: 4.0.25
 
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
 
mysql>

Kezdetként próbáljunk meg létrehozni egy új adatbázist az admin felhasználónkkal. Ez az admin felhasználó hasonló hozzáféréssel rendelkezik, mint a root MySQL fiók, és bármilyen módosítást elvégezhet a gentoo adatbázisban. Ez a lépés teszteli a felhasználó hozzáférését a fő MySQL adatbázishoz. Ne feledje, hogy korábban csak egy adott adatbázisra állítottunk be jogosultságokat.

mysql>CREATE DATABASE gentoo2;
ERROR 1044: Access denied for user: 'admin@localhost' to database 'gentoo2'

Valóban, az admin felhasználó nem hozhat létre adatbázisokat a fő MySQL adatbázison, annak ellenére, hogy teljes jogosultsággal rendelkezik a gentoo adatbázisban. Azonban továbbra is képesek vagyunk az admin fiókot használni a gentoo adatbázis módosítására, ahogy azt az alábbi példában bemutatott adatbeszúrás is szemlélteti.

mysql>USE gentoo;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql> INSERT INTO developers VALUES('Bob Simmons', 'bobsimmons@gentoo.org', 'python');
Query OK, 1 row affected (0.08 sec)

Az admin felhasználó tetszés szerint hozzáférhet az adatbázishoz. Néha azonban el kell távolítanunk a felhasználói jogosultságokat. Ez történhet például egy problémás felhasználó vagy egy nyugdíjba vonult alkalmazott esetében. Nézzük meg, hogy miként lehet letiltani a felhasználói jogosultságokat a REVOKE parancs segítségével.

Felhasználói hozzáférés eltávolítása a REVOKE paranccsal

A REVOKE parancs lehetővé teszi, hogy megtagadjuk a felhasználó hozzáférését. Teljes hozzáférést vagy csak bizonyos hozzáféréseket tagadhatunk meg. Valójában a formátuma nagyon hasonlít a GRANT parancshoz.

CODE REVOKE Syntax
REVOKE [privileges] ON database.* FROM '[user]'@'[host]';

A GRANT parancs opcióit itt részben magyarázzuk. Ebben a részben teljes hozzáférést fogunk megtagadni egy felhasználótól. Tegyük fel, hogy kiderül, hogy a guest fiók biztonsági problémákat okoz. Úgy döntünk, hogy visszavonjuk minden jogosultságát. Jelentkezzünk be root felhasználóként, és végezzük el a szükséges lépéseket.

mysql>REVOKE ALL ON gentoo.* FROM 'guest'@'localhost';
Query OK, 0 rows affected (0.00 sec)
Note
Ebben az esetben a felhasználói hozzáférés egyszerű, így az adatbázisonkénti visszavonás nem okoz problémát. Azonban nagyobb esetekben Ön valószínűleg a *.*-ot használná a gentoo.* helyett a felhasználói hozzáférés eltávolítására az összes többi adatbázisból.

Most lépjünk ki, és próbáljunk meg vendég felhasználóként bejelentkezni.

user $mysql -u guest -h localhost -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9 to server version: 4.0.25
 
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
 
mysql>

Bár sikerült bejelentkeznünk, a gentoo-hoz való hozzáférésünk már megszűnt.

mysql>USE gentoo;
ERROR 1044: Access denied for user: 'guest@localhost' to database 'gentoo'

Valamint a problémás felhasználó többé nem tud hozzáférni a gentoo adatbázishoz. Kérjük, vegye figyelembe, hogy a felhasználó továbbra is be tudott jelentkezni. Ennek oka, hogy a fő MySQL adatbázisban maradt. Most nézzük meg, hogyan lehet teljesen eltávolítani egy fiókot a DROP USER paranccsal.

Fiókok eltávolítása

Győződjön arról, hogy root felhasználóként van bejelentkezve.

A DROP USER parancs törli a felhasználó rekordját a felhasználói táblázatban és az összes jogosultsági táblázatban. Most hajtsuk végre ezt a parancsot:

mysql>DROP USER 'guest'@'localhost';
Query OK, 1 row affected (0.07 sec)

Úgy tűnik, hogy rendben lefutott. Most teszteljük azzal, hogy kilépünk, majd megpróbálunk vendég felhasználóként bejelentkezni.

mysql>quit
Bye
user $mysql -u guest -h localhost -p
Enter password:
ERROR 1045: Access denied for user: 'guest@localhost' (Using password: YES)

A felhasználónkat most sikeresen kitöröltük!

Következtetés

Miközben ez az útmutató elsősorban a MySQL parancssori beállítására összpontosít, néhány alternatíva elérhető grafikus felületen:

  • phpMyAdmin - Népszerű PHP alapú MySQL adminisztrációs eszköz.

Most lezárjuk a MySQL bevezetőjének az oktatóanyagát. Reméljük, hogy a MySQL alapjait és az adatbázis beállítását jobban megsikerült értenie.


This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Chris White, Shyam Mani, Xavier Neys
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.