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 16636×

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ů

4.10.2018 21:30 /Ondřej Čečák
LinuxDays 2018 již tento víkend, registrace je otevřená.
Přidat komentář

18.9.2018 23:30 /František Kučera
Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář

9.9.2018 14:15 /Redakce Linuxsoft.cz
20.9.2018 proběhne v pražském Kongresovém centru Vavruška konference Mobilní řešení pro business. Návštěvníci si vyslechnou mimo jiné přednášky na témata: Nejdůležitější aktuální trendy v oblasti mobilních technologií, správa a zabezpečení mobilních zařízení ve firmách, jak mobilně přistupovat k informačnímu systému firmy, kdy se vyplatí používat odolná mobilní zařízení nebo jak zabezpečit mobilní komunikaci.
Přidat komentář

12.8.2018 16:58 /František Kučera
Srpnový pražský sraz spolku OpenAlt se koná ve čtvrtek – 16. 8. 2018 od 19:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát jsou tématem srazu databáze prezentaci svého projektu si pro nás připravil Standa Dzik. Dále bude prostor, abychom probrali nápady na využití IoT a sítě The Things Network, případně další témata.
Přidat komentář

16.7.2018 1:05 /František Kučera
Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.
Přidat komentář

18.6.2018 0:43 /František Kučera
Červnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 21. 6. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: F-Droid, aneb svobodný software do vašeho mobilu. Kromě toho budou k vidění i vývojové desky HiFive1 se svobodným/otevřeným čipem RISC-V.
Přidat komentář

23.5.2018 20:55 /Ondřej Čečák
Od pátku 25.5. proběhne na Fakultě informačních technologií ČVUT v Praze openSUSE Conference. Můžete se těšit na spostu zajímavých přednášek, workshopů a také na Release Party nového openSUSE leap 15.0. V na stejném místě proběhne v sobotu 26.5. i seminář o bezpečnosti CryptoFest.
Přidat komentář

20.5.2018 17:45 /Redakce Linuxsoft.cz
Ve čtvrtek 31. května 2018 připravuje webový magazín BusinessIT ve spolupráci s Best Online Média s.r.o. pátý ročník odborné konference Firemní informační systémy 2018. Akce proběhne v kongresovém centru Vavruška (palác Charitas), Karlovo náměstí 5, Praha 2 (u metra Karlovo náměstí) od 9:00 hod. dopoledne do cca 15 hod. odpoledne. Konference je zaměřena na efektivní využití firemních informačních systémů a na to, jak plně využít jejich potenciál. Podrobnější informace na webových stránkách konfrence.
Přidat komentář

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

> Poslední diskuze

5.10.2018 17:12 / Jakub Kuljovsky
Re: Jaký kurz a software by jste doporučili pro začínajcího kodéra?

20.9.2018 10:04 / Jan Ober
Jaký kurz a software by jste doporučili pro začínajcího kodéra?

20.9.2018 10:00 / Jan Ober
Re: Gimp

20.2.2018 18:48 / Ivan Majer
portal

20.2.2018 15:57 / Jan Havel
Jak využíváte služby cloudu v podnikání?

Více ...

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