|
||||||||||||||||||||||||||||||||||||||||||||||||
Menu
Distributions (131)
Software (10844)
|
Administrace MySQL I. - úvodDnes tu máme první díl seriálu o administraci MySQL a
začneme s instalací a nastavením uživatelských práv.
Co je toJe 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 vypadatZaměř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. InstalaceAby dnešní úvod nezůstal jen suchou teorií. Nainstalujeme MySQL abychom mohli začít s konfigurací. co budeme potřebovatBudeme 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árokyZá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ákuBalíč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íčkyPro 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řístupuV 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:
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 userV 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 DBZde jsou uložena oprávnění k jednotlivým databázím, struktura je v podstatě stejná u jako u tabulky user. Tabulka hostZde můžete měnit oprávnění pro různé databáze, podle toho, odkud se uživatel přihlásil. Tabulka columns_privPráva pro jednotlivé sloupce tabulek. Tabulka tables_privPráva pro jednotlivé tabulky. Práce s uživatelskými účtyTeď 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: GRANTPří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ávK 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í heslaOpě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ěrDnes 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.
|
Search Software
Search Google
|
||||||||||||||||||||||||||||||||||||||||||||||
©Pavel Kysilka - 2003-2024 | maillinuxsoft.cz | Design: www.megadesign.cz |