LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> Administrace MySQL I. - úvod

Dnes tu máme první díl seriálu o administraci MySQL a začneme s instalací a nastavením uživatelských práv.

27.8.2004 08:00 | Martin Svoboda | Články autora | přečteno 15999×

Co je to

Je to relační databáze, která se dnes hojně používá ve spojení s PHP pro tvorbu dynamických stránek, není to jen pouhé úložiště dat, ale umí s nimi efektivně pracovat. Je OpenSource a pro nekomerční použití zdarma. Je rychlá. Je snadno přenositelná (UNIX, Windows, OS/2 ...). Ale protože chci seriál zaměřit spíše prakticky, dost vychvalování a podíváme se co nás čeká.

Jak bude seriál vypadat

Zaměřen bude hlavně na administraci a konfiguraci MySQL serveru. Postupně projdeme instalaci, konfiguraci, zabezpečení a správu serveru, naučíme se pracovat s obslužnými programy, zálohovat a jiné užitečné věci.

Instalace

Aby dnešní úvod nezůstal jen suchou teorií. Nainstalujeme MySQL abychom mohli začít s konfigurací.

co budeme potřebovat

Budeme potřebovat balík zdrojových kódů, nebo ještě lépe balík přímo pro vaší distribuci (ale většina distribucí ho obsahuje, takže by to pro vás neměl být problém), pokud ne tahejte z www.mysql.com. A ještě jedna rada, stáhněte si stabilní verzi (aktuálně 4.0.20), verze 5 je vývojová a není vhodná pro naše použítí, protože nemusí být ještě úplně stabilní a odladěná.

Já používám verzi 4.0.20 od toho se budou odvíjet také všechny příklady v tomto seriálu. Pokud používáte některou ze starších verzí, tak vás vždy na všechny rozdíly upozorním.

nároky

Záleží na tom k čemu budete MySQL využívat, ale pro účely našeho seriálu postačí i slabší konfigurace počítače, já MySQL používám na Celeronu 700 Mhz, 128 MB @ 66Mhz, HDD 20 GB, slackware 10.0 s jádrem 2.6.7 a vše šlape spokojeně jak má. Pokud by jste měli při kompilaci problém s nedostatkem paměti, můžete použít volbu --with-low-memory (viz. dále).

jdeme na to - instalujeme ze zdrojáku

Balíček se zdrojovými kódy obsahuje: server mysqld, klientské nástroje pro práci a administraci mysql, knihovny jazka C, dokumentaci, ukázkové soubory a jazykovou podporu. Má něco kolem 13 MB, takže ho můžete stáhnout i s pomalejším připojením.

Do adresáře /usr/local/ nakopírujte balíček a rozbalte ho

$ tar xvzf mysql-cislo-verze.tar.gz

Vlezte do adresře

$ cd mysql-cislo-verze

Nyní nakonfigurujeme, zkompilujeme a nainstalujeme (na to musíte být root, nebo pro instalaci zvolit adresář ve kterém mám právo zápisu), pokud spustíte konfigurační script s parametrem help vypíše vám volby které můžete použít. Na ty nejpoužívanější/nejdůležitější se podíváme podrobněji.

--prefix=cesta - nastavuje kořenovou složku, implicitní hodnota je /usr/local/mysql

--localstatedir=cesta - nastavuje adresář s daty, pokud chcete mít databáze uložené mimo kořenovou složku použijte tuto volbu

Můžete nastavit umístění i ostatních adresářů, pokud tak chcete učinit spusťte ./configure --help a přečtete si sekci Fine tuning of the installation directories. Pokud to nebudete stíhat skuste ./configure --help | more.

--with-openssl zapne podporu open ssl

--without-server - pokud chcete zkompilovat jen klientské programy a budete přistupovat k serveru jinde

--with-low-memory - jak už jsem víše zmínil, tato volba bude užitečná, pokud kompilujete na stroji , který má nedostatek operační paměti pro normální průběh instalace.

Tak a teď, jestli máte vybráno co potřebujete můžete spustit konfigurační skript s vašimy parametry, skompilovat a nainstalovat.

$ ./configure --vase-volby && make && make install"

Pokud vše dobře dopadlo, zbývá nám nainstalovat základní tabulky, to provedeme následujícím příkazem:

$ mysql_install_db

Ještě přidáme do proměnné PATH (např. v /etc/profile)cestu k adresáři bin, který je v instalačním adresáři. To proto aby jste na příkazovou řádku nemuseli pokaždé vypisovat plnou cestu.

server nastartujete příkazem

$ safe_mysqld &

jdeme na to - instalujeme balíčky

Pro ukázku jsem vybral balíčky .tgz protože používám slackware, u jiné distribuce se to bude lišit, např umístění startovacích scriptů apd.

$installpkg /cesta/balicky.tgz

Měl by se nám vytvořit uživatel a skupina z názvem mysql, pokud ne vytvořte je :) (adduser) Dále je nutné nastavit správná práva pro adresář mysql (při instalaci z balíčku je to /var/lib/mysql), na jeho strukturu se také někdy podíváme.

$chmod -R 700 /var/lib/mysql 
$chown -R mysql.mysql /var/lib/mysql

Volba -R je důležitá, zajistí, že program chmod projde i podadresáře, ale to jen tak mimo.

Také by měl existovat startovací script (/etc/rc.d/rc.mysql), pokud chcete aby mysql nabíhalo samo musíte mu nastavit právo spouštění pro vlastníka, to platí pro slackware, pokud používáte jinou distribuci, musíte zajistit aby se rc soubor spouštěl v požadovaném runlevelu, nebo tak :-)

$ chmod 700 /etc/rc.d/rc.mysql

Pokud chcete spouštět hned zavolejte script s parametrem start

$ /etc/rc.d/rc.mysql start

Než pujdeme dál, bylo by dobré ukázat si jak se k databázi připojíme, bez toho by jsme se asi nepohnuli dál.

$ mysql -u root

mysql je klientský program, sloužící pro připojení k serveru, volba -u slouží pro specifikaci uživatelského jména, další volby zatím nebudeme potřebovat, předpoklám že vám server běží na localhost.

řízení přístupu

V tomto stádiu je instalace nezabezpečená a kdokoliv se může přihlásit jako root (myšleno root v mysql, né pro váš systém, to je jen shoda jmen, takže nepropadejte panice :-), jak už jste si patrně všimli :-), proto se nyní podíváme jak to funguje a vše dáme do pořádku.

Databáze mysql (kterou jsme vytvořili příkazem mysql_install_db) obsahuje tyto tabulky pro řízení přístupu:

  • user
  • db
  • host
  • func
  • columns_priv
  • tables_priv

Jestli mi nevěříte, můžete si je zkusit vypsat

mysql > \u mysql         /* vlezeme do databáze */ 
mysql > show tables;     /* vypíšeme tabulky */ 
mysql > slect * from nazev_tabulky /* vypíšeme obsah určité tabulky */

tabulka user

V tabulce user jsou uložena oprávnění pro uživatele, která platí na úrovni celé databáze, proto dávejte pozor co zde komu dovolíte.

host - IP adresa, nebo název počítače, odkud se uživatel může připojit, pokud je vám to jedno, použijte znak % jako zástupný symbol pro cokoliv. Při nastavování m;žete použít síťovou masku (od verze 3.23)

User - Jméno uživatele.

Password - Heslo zahashované funkcí PASSWORD().

Následující položky můžou nabývat hodnot Y a N, jako výchozí hodnota je nastaveno N.

Select_priv - Vypisování řádků z tabulky.

Insert_priv - Vkládání řádků do tabulky.

Update_priv - Update řádků v tabulce.

Delete_priv - Odstraňování řádků z tabulky.

Create_priv - Vytváření databází a tabulek.

Drop_priv - Mazání databází a tabulek.

Reload_priv - Znovunačtení tabulky přístupových oprávnění.

Shutdown_priv - Vypínaní serveru.

Process_priv - Prohlížení informací o vláknech serveru

File_priv - Přístup k souborům na serveru, číst můžete jen soubory čitelné všemi a vytvářet jen nové soubory tzn. že nemůžete přepsat existující soubor.

Grant_priv - Udělovaní oprávnění jiným účtům.

References_priv - Rezervováno pro budoucí použití.

Index_priv - Vytváření/odstraňování indexů.

Alter_priv - Změny struktury tabulky.

Show_db_priv - Zobrazovat informace o databázích (SHOW DATABASES)

Super_priv - Superuživatelské operace, práce s vlákny apd...

Create_tmp_table_priv - Vytváření dočasných tabulek

Execute_priv - Spouštění uživatelských procedur (zatím se nepoužívá, kdyžtak mě opravte ;-)

Lock_tables_priv - Povolí nastavení zámku proti čtení/zápisu.

Tabulka user obsahuje ještě některé další položky, ale ty se nevztahují k přímo k přístupovým právům.

Tabulka DB

Zde jsou uložena oprávnění k jednotlivým databázím, struktura je v podstatě stejná u jako u tabulky user.

Tabulka host

Zde můžete měnit oprávnění pro různé databáze, podle toho, odkud se uživatel přihlásil.

Tabulka columns_priv

Práva pro jednotlivé sloupce tabulek.

Tabulka tables_priv

Práva pro jednotlivé tabulky.

Práce s uživatelskými účty

Teď by jste asi rádi věděli, jak se s tím pracuje? Mohlo by vás napadnout, že , když je to všechno v tabulkách, že by jsme s nimi mohli pracovat obyčejně, jako s jinými daty. Ano samozřejmě, že to taky jde, ale server MySQL si tyto informace udržuje v paměti, pokud provedete změnu v tabulce příkazem UPDATE, musíte spusit příkaz FLUSH PRIVILEGES (dostupný od mysql verze 3.22), který serveru řekne, aby si znovu načetl tabulky přístupových oprávnění.

Zdá se vám to zbytečně složité? Naštěstí má MySQL speciální příkazy, nebo obslužné programy:

GRANT

Příkaz, který slouží pro přidávaní uživatelů a nastavení jejich práv. V MySQL je od verze 3.22.

GRANT oprávnění(sloupce) 
  ON kde
    TO komu IDENTIFIED BY 'heslo'
    REQUIRE Volby pro šifrování
    WITH další volby

oprávnění, určuje co bude moct uživatel dělat, na výběr máte z:

ALL - Může všechno.

ALTER - Měnit strukturu tabulky.

CREATE - Vytvářet tabulky a databáze.

DELETE - Mazat záznamy z tabulek.

DROP - Mazat tabulky a databáze.

FILE - Práce se soubory na serveru.

INDEX - Vytvářet a odstraňovat indexy.

INSERT - Vkládat řádky do tabulek.

PROCESS - Získávání informací o vláknech.

REFERENCES - Nepoužívá se.

RELOAD - Znovunačítání přístupových oprávnění apd.

SELECT - Vybírat záznamy z tabulek.

SHUTDOWN - Ukončovat práci serveru.

UPDATE - Aktualizování řádků v tabulce.

USAGE - Nemá žádná oprávnění.

Je to podobné položkám v tabulce user apd. že ? ;-)

mysql> GRANT ALL ON *.* TO nond@'%' IDENTIFIED BY 'tajne_heslo'; 
mysql> GRANT ALL ON *.* TO nond@'localhost' IDENTIFIED BY 'tajne_heslo'; 

V tomto příkladu jsem vytvořili uživatele nond, který má všechna práva na všechny databáze a může se přihlásit odkudkoliv. Je to v podstatě superuživatel, jenom nemůže přidělovat práva ostatním, k tomu bychom museli uvést volbu WITH GRANT OPTION.

mysql> GRANT INSERT,SELECT,UPDATE,DELETE,CREATE,DROP ON userova_db.*\
         \ TO user@'%' IDENTIFIED BY 'tajne_heslo'; 
mysql> GRANT INSERT,SELECT,UPDATE,DELETE,CREATE,DROP ON userova_db.*\
           \ TO user@'localhost' IDENTIFIED BY 'tajne_heslo'; 

Teď jsme vytvořili obyčejného uživatele, který se může připojit odkudkoliv a v databázi userova_db může provádět řekněme základní operace.

kde

Určuje k jaké databázi, popřípadě tabulce, nebo sloupečku (ty se uvádí v (sloupce), viz nahoře) má uživatel přístup. Zápis je databáz.tabulka a je možno použít zástupný znak * pro cokoliv.

userova_db.knihy /* v databázi userova_db tabulka knihy */
userova_db.*     /* všechny tabulky v userova_db */
*.poznamky       /* tabulka poznámky ve všech databázích */    

komu

Zde se nastavuje, kdo se může, odkud připojit. Zápis je 'jméno'@'doména', s tím, že znak % má stejný význam jako * v předchozím příkladu. Hodnota localhost znamená místního hostitele, tj, tam kde běží server.

'user'@'192.168.%' /* user se může připojit odkudkoli z podsítě třídy B*/
'user'@'%.priklad.cz'      /* všechny počítače v doméně priklad.cz*/ 

Odebírání práv

K tomu slouží příkaz REVOKE, neumí však vymazat účet, to musíte provést ručně příkazem DELETE, potom nezapomeňte ještě zadat příkaz FLUSH PRIVILEGES, aby si server znovu načetl tabulku oprávnění do paměti.

mysql>REVOKE práva (sloupce) ON kde FROM kdo;

Položky práva, kde a kdo jsou stejné jako u příkazu GRANT.

Nastavení hesla

Opět můžeme provést příkazem UPDATE, ale v MySQL existuje příkaz SET PASSWORD, který je bezpečnější a snažší, prostě k tomu určený. Nebudu ho ani popisovat, protože z příkladu vám bude vše jasné.

mysql>SET PASSWORD FOR 'kdo'@'domena' = PASSSWORD('tajne_heslo'); 

Závěr

Dnes jsem vám ukázal jak MySQL nainstalovat a jak spravovat uživatelské účty, doufám že už nemáte roota bez hesla :-)

No a příště se podíváme na další věci týkající se zabezpečení MySQL, nastavování limitů a šifrování. Doufám že se vám článek líbil a pokud vám v něčem pomůže a jestliže máte nějaké nápady, dotazy nebo připomínky , budu rád, když využijete diskuzi.

Verze pro tisk

pridej.cz

 

DISKUZE

Ach, ta čeština 27.8.2004 18:19 Petr Zajíc
|- Re: Ach, ta čeština 27.8.2004 19:06 Martin Svoboda
L Re: Ach, ta čeština 27.8.2004 21:38 Ivan Majer
proč 2 záznamy - % a localhost 27.8.2004 22:35 Pepíno
L Re: proč 2 záznamy - % a localhost 28.8.2004 08:43 Martin Svoboda
  L Re: proč 2 záznamy - % a localhost 30.8.2004 10:53 Jan Houštěk
    L Re: proč 2 záznamy - % a localhost 30.8.2004 11:26 Martin Svoboda
Logo 12.9.2004 20:18 Milan Kozák
Sorry 12.9.2004 20:19 Milan Kozák




Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

14.11.2017 16:56 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt – tradičně první čtvrtek před třetím pátkem v měsíci: 16. listopadu od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

12.11.2017 11:06 /Redakce Linuxsoft.cz
PR: 4. ročník odborné IT konference na téma Datová centra pro business proběhne již ve čtvrtek 23. listopadu 2017 v konferenčním centru Vavruška, v paláci Charitas, Karlovo náměstí 5, Praha 2 (u metra Karlovo náměstí) od 9:00. Konference o návrhu, budování, správě a efektivním využívání datových center nabídne odpovědi na aktuální a často řešené otázky, např Jaké jsou aktuální trendy v oblasti datových center a jak je využít pro vlastní prospěch? Jak zajistit pro firmu či jinou organizaci odpovídající služby datových center? Podle jakých kritérií vybrat dodavatele služeb? Jak volit součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně spravovat datové centrum? Jak eliminovat možná rizika? apod.
Přidat komentář

13.9.2017 8:00 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt – tentokrát netradičně v pondělí: 18. září od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

3.9.2017 20:45 /Redakce Linuxsoft.cz
PR: Dne 21. září 2017 proběhne v Praze konference "Mobilní řešení pro business". Hlavní tématy konference budou: nejnovější trendy v oblasti mobilních řešení pro firmy, efektivní využití mobilních zařízení, bezpečnostní rizika a řešení pro jejich omezení, správa mobilních zařízení ve firmách a další.
Přidat komentář

15.5.2017 23:50 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 18. května od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

12.5.2017 16:42 /Honza Javorek
PyCon CZ, česká konference o programovacím jazyce Python, se po dvou úspěšných ročnících v Brně bude letos konat v Praze, a to 8. až 10. června. Na konferenci letos zavítá např. i Armin Ronacher, známý především jako autor frameworku Flask, šablon Jinja2/Twig, a dalších projektů. Těšit se můžete na přednášky o datové analytice, tvorbě webu, testování, tvorbě API, učení a mentorování programování, přednášky o rozvoji komunity, o použití Pythonu ve vědě nebo k ovládání nejrůznějších zařízení (MicroPython). Na vlastní prsty si můžete na workshopech vyzkoušet postavit Pythonem ovládaného robota, naučit se učit šestileté děti programovat, efektivně testovat nebo si v Pythonu pohrát s kartografickým materiálem. Kupujte lístky, dokud jsou.
Přidat komentář

2.5.2017 9:20 /Eva Rázgová
Putovní konference československé Drupal komunity "DrupalCamp Československo" se tentokrát koná 27. 5.2017 na VUT FIT v Brně. Můžete načerpat a vyměnit si zkušenosti z oblasti Drupalu 7 a 8, UX, SEO, managementu týmového vývoje, využití Dockeru pro Drupal a dalších. Vítáni jsou nováčci i experti. Akci pořádají Slovenská Drupal Asociácia a česká Asociace pro Drupal. Registrace na webu .
Přidat komentář

1.5.2017 20:31 /Pavel `Goldenfish' Kysilka
PR: 25.5.2017 proběhne v Praze konference na téma Firemní informační systémy. Hlavními tématy jsou: Informační systémy s vlastní inteligencí, efektivní práce s dokumenty, mobilní přístup k datům nebo využívání cloudu.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

15.12.2017 15:11 / Petit
freehold nj

15.12.2017 15:06 / Petit
nj freehold

5.12.2017 11:50 / Thomas
kitchen renovations

18.9.2017 14:37 / Rojas
high security vault

15.9.2017 7:33 / Wilson
new zealand childcare jobs

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2017) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze