Na této stránce databáze MySQL jsou vysvětleny a modul Webmin, který jej spravuje, a jsou uvedeny kroky, které je třeba dodržet při vytváření databází, tabulek a uživatelů.
- Viz Úvod do MySQL
Tento modul umožňuje vytvářet databáze, tabulky a pole, upravovat záznamy a spravovat uživatele MySQL prostřednictvím jednoduchého webového rozhraní. Jeho ikonu najdete v kategorii Servery a po kliknutí na ni se na hlavní stránce modulu zobrazí tabulka ikon pro existující databáze, jak je znázorněno na obrázku níže (za předpokladu, že je nainstalováno a spuštěno MySQL).
Hlavní stránka modulu MySQL Database Server hned po instalaci mariadb-serveru a spuštění doporučeného /usr/bin/mysql_secure_installation k odstranění narušení bezpečnostiPokud je databázový server spuštěn, ale Webmin nezná správné heslo pro přihlášení k němu, na hlavní stránce se místo toho zobrazí formulář *MySQL Login*. Do pole Login' byste měli zadat administrátorské uživatelské jméno (obvykle root) a odpovídající heslo do heslo pole. I když je možné zadat uživatelské jméno a heslo pro libovolného uživatele MySQL, uživatelé bez oprávnění root nemohou provádět úkoly, jako je vytváření databází a tabulek - a modul to tedy nebude moci.
Ve výchozím nastavení je modul nakonfigurován pro přihlášení pomocí uživatelského jména a hesla, které standardně používá balíček MySQL pro vaši distribuci. Pouze pokud jste jej změnili ručně nebo prostřednictvím Webminu, dojde k Přihlášení k MySQL zobrazí se stránka.
Pokud databázový server není ve vašem systému vůbec nainstalován, na hlavní stránce se zobrazí chybová zpráva, jako je *Klientský program MySQL /usr/bin/mysql nebyl ve vašem systému nalezen*. Zkontrolujte své distribuční CD nebo webovou stránku, kde najdete všechny balíčky související s MySQL a nainstalujte je pomocí modulu Software Packages. Často existuje několik, pojmenovaných něco jako mysql, mysql-client, mysql-server a mysql-devel. Zdá se, že každá distribuce Linuxu používá jinou sadu balíčků, takže se ujistěte, že je všechny nainstalujete.
Na FreeBSD a NetBSD modul očekává instalaci balíčku MySQL pro tyto operační systémy. U ostatních unixových variant předpokládá, že jste zkompilovali a nainstalovali MySQL z distribuce zdrojového kódu dostupné na http://www.mysql.com/.
Pokud si modul stěžuje, že nemůže najít program mysql, i když jej máte nainstalovaný, budete muset upravit cesty, které používá. To se může stát, pokud jste jej nainstalovali ze zdroje namísto použití balíčku, který je součástí vaší distribuce Linuxu.
Modul MySQL používá příkazy SQL k provádění akcí, jako je vytváření tabulek, přidávání polí a úpravy záznamů. Pro provedení těchto příkazů se Webmin musí připojit k databázovému serveru, což lze provést jedním ze dvou způsobů. Může buď spustit příkaz mysql se správnými parametry a analyzovat jeho výstup, nebo použít knihovnu Perl DBI pro přímé připojení.
První metoda je vždy k dispozici, protože příkaz mysql se vždy instaluje, když je databázový server. Není však zcela spolehlivý, protože určité druhy tabulkových dat vytvářejí výstup, který nelze vždy analyzovat. Z tohoto důvodu byste měli nainstalovat moduly DBI a DBD::mysql Perl. Pokud některý chybí, ve spodní části hlavní stránky se zobrazí zpráva s výzvou k instalaci jednoho nebo obou kliknutím na odkaz. Tím se dostanete na stránku v modulu Perl Modules (popsané v kapitole 27), kde se stáhne a nainstaluje DBI a/nebo DBD::mysql.
Obsah
Vytvoření nové databáze
Stránka pro úpravy databázePři první instalaci MySQL se vytvoří databáze nazvaná mysql, která obsahuje tabulky související s ověřováním a řízením přístupu. Pokud si chcete ukládat svá vlastní data, je nejlepší vytvořit si vlastní databázi, do které budete přidávat tabulky, místo abyste se zabývali databází mysql. Chcete-li to provést, postupujte takto:
- Na hlavní stránce modulu klikněte na Vytvořit novou databázi odkaz nad nebo pod tabulkou existujících ikon databáze. Tím se dostanete do formuláře pro zadání údajů o nové databázi.
- Do pole Název databáze zadejte název nové databáze pole. Jména by měla obsahovat pouze písmena a čísla a žádné mezery.
- Formulář je možné použít k vytvoření počáteční tabulky pro novou databázi. Po vytvoření jej však můžete stejně snadno přidat jako Vytvořit novou tabulku část vysvětluje.
- Klikněte na tlačítko Vytvořit tlačítko ve spodní části formuláře pro vytvoření databáze. Vrátíte se na hlavní stránku modulu, která nyní bude obsahovat novou ikonu databáze.
Vytvoření nové tabulky
Stránka pro úpravu tabulkyTabulky lze kdykoli přidat do nově vytvořených nebo existujících databází. Každá tabulka má jedno nebo více polí, z nichž každé má typ (například celé číslo, desítkové číslo nebo text) a velikost. Pole lze také indexovat, aby se urychlily dotazy SQL, které vyhledávají záznamy na základě hodnot v tomto sloupci. Chcete-li přidat novou tabulku do databáze, postupujte takto:
- Na hlavní stránce modulu klikněte na ikonu databáze. Tím se dostanete na stránku pro úpravu databáze zobrazenou na obrázku níže, která obsahuje ikonu pro každou existující tabulku a tlačítka pro provádění různých akcí.
- Do Pole zadejte počet polí, která má mít vaše nová tabulka. textové pole vedle Vytvořit novou tabulku a poté klikněte na tlačítko. Otevře se formulář pro zadání podrobností nové tabulky a jejích počátečních polí.
- Zadejte název této tabulky do Název tabulky pole. Měl by se skládat z písmen, číslic a znaku _ a musí být v rámci této databáze jedinečný.
- Chcete-li zkopírovat jeho pole z existující tabulky, vyberte ji z Kopírovat pole z tabulky Jídelní lístek. Jakákoli další pole, která zadáte níže do Počáteční pole tabulka bude přidána za zkopírovanou.
- Typ tabulky nabídky lze použít k výběru jiného typu úložiště pro tento stůl. Nejčastěji používané typy jsou:
- MyISAM
- Standardní typ tabulky pro MySQL verze 3.23 a vyšší. V operačních systémech, které podporují velké soubory, mohou mít tabulky této velikosti velikost přibližně 2 000 000 000 GB. Soubory tabulek jsou nezávislé na operačním systému, klíče mohou mít délku 500 bajtů a v jedné tabulce lze použít 32 sloupců klíčů.
- InnoDB
- Špičkový typ tabulky, který podporuje transakce, obrovské množství dat a běží mnohem rychleji než MyISAM.
- ISAM
- Starý standardní typ tabulky MySQL, nyní nahrazený MyISAM. Soubor tabulky ISAM může mít velikost pouze 4 GB, klíče mohou mít délku pouze 256 bajtů a tabulka může mít maximálně 16 sloupců klíčů.
- Hromadu
- Data v tabulkách haldy jsou uložena pouze v paměti. Díky tomu jsou velmi rychlé, ale užitečné pouze pro dočasná data, protože obsah tabulky bude ztracen a MySQL je vypnutá. Pokud vyberete Výchozí nebo pokud vybraný typ není podporován MySQL na vašem systému, bude použit typ MyISAM.
- Počáteční pole sekce je pro zadání podrobností o skutečných polích, která bude vaše nová tabulka obsahovat. Každý řádek, který vyplníte, definuje jedno pole na základě hodnot, které zadáte pod každým z následujících záhlaví :
- Název pole
- Jedinečný název pro toto pole, který by se měl skládat z písmen, číslic a znaku _. Není dobrý nápad vybrat název, který je stejný jako vyhrazené slovo SQL, jako například select, update nebo index.
- Typ dat
- Z této nabídky musíte vybrat typ dat v tomto poli. Nejběžnější jsou varchar (pro textové řetězce proměnné délky) a int (pro celá čísla). Viz Typy polí v sekci níže, kde najdete úplný seznam podporovaných typů.
- Zadejte šířku
- Velikost dat, která lze uložit do tohoto pole. To má různý význam v závislosti na typu - například pro pole varchar je šířka maximální délkou textu, ale pro pole int je to maximální počet desetinných číslic. Ještě jednou Typy polí část této kapitoly pojednává o šířkách podrobněji. Pokud necháte toto textové pole pro pole prázdné, použije se výchozí šířka. Mnoho typů (jako je blob, text a datum) má pevnou velikost, a proto by neměla mít vůbec zadanou šířku.
- Primární klíč?
- Pokud je toto políčko zaškrtnuté, bude toto pole součástí primárního klíče tabulky. Klíčová pole jsou indexována MySQL, takže příkazy SQL, které na ně odkazují v klauzuli where, běží rychleji. Žádné dva záznamy však nemohou mít stejné hodnoty v polích primárního klíče. Tradičně je klíčem první pole v tabulce. Ne všechny typy lze použít – pole primárního klíče je obvykle int nebo varchar. Všechny tabulky by měly mít primární klíč, aby bylo možné data v nich upravovat ve Webminu.
- Automatické zvýšení?
- Pokud je tato volba zaškrtnuta pro číselné pole, MySQL automaticky vloží číslo o jednu vyšší, než je maximum do tabulky, kdykoli je přidán záznam (pokud příkaz k vytvoření záznamu výslovně neurčuje hodnotu). To může být užitečné pro automatické generování ID čísel a je často povoleno pro pole primárního klíče.
- Jakmile zadáte všechna pole, klikněte na Vytvořit tlačítko ve spodní části formuláře. Pokud tabulku z nějakého důvodu nelze vytvořit, zobrazí se chybová zpráva SQL z MySQL. K tomu může dojít, pokud je název pole neplatný nebo pokud šířka typu nedává pro typ smysl. Pokud k tomu dojde, vraťte se do formuláře pomocí tlačítka Zpět v prohlížeči a opravte problémy. Po úspěšném vytvoření tabulky se vrátíte na stránku pro úpravy databáze, která nyní bude obsahovat novou ikonu tabulky.
Přidávání a úprava polí
Upravit poleDo tabulky lze přidávat nová pole a stávající měnit nebo mazat. Přidání pole nepředstavuje žádné riziko pro existující data, ale změna typu nebo velikosti pole může – a odstranění pole způsobí ztrátu dat, která obsahuje. Chcete-li přidat nové pole, postupujte takto:
- Na hlavní stránce modulu klikněte na ikonu databáze, která obsahuje tabulku, a poté na ikonu tabulky. Zobrazí se stránka zobrazená na obrázku níže, která obsahuje názvy, typy a další podrobnosti všech existujících polí.
- Než na něj kliknete, vyberte typ nového pole z nabídky vedle tlačítka *Přidat pole typu*. Viz Typy polí v sekci níže se seznamem typů a jejich účelů.
- Ve formuláři pro přidání pole, který se zobrazí, zadejte jedinečný název pro toto pole do pole Název pole Textové pole. Žádná dvě pole ve stejné tabulce nemohou mít stejný název a lze použít pouze písmena, čísla a _.
- Pokud přidáváte pole char nebo varchar, musíte do pole Šířka typu zadat maximální počet znaků. Textové pole. Pokud přidáváte plovoucí, dvojité nebo desetinné pole, musíte zadat dvě čísla do pole Šířka a desetinná místa textová pole. První je celkový počet číslic, které může hodnota obsahovat, a druhý počet číslic napravo od desetinné čárky. U záporných čísel se znaménko mínus počítá jako číslice – tedy pole s šířkou a desetinnými místy nastavena na 5 a 2 mohla ukládat čísla od 99,99 do 999,99. Pro pole datum, datum a čas, čas, blob a textová pole se vůbec nezadává šířka, protože tyto typy mají pevnou nebo neomezenou velikost. Pro pole výčtu a sady musíte do textového pole *Výčet hodnot* zadat seznam možných hodnot. Pro všechny ostatní typy polí (jako je int) Šířka typu lze nastavit na Výchozí aby pole použilo výchozí velikost pro vybraný typ, nebo lze zadat šířku. Pro pole int se jedná o maximální počet číslic, které může hodnota v tomto poli obsahovat.
- U celočíselných typů polí (jako je int a smallint) vám přepínače *Možnosti typu* umožňují zvolit, zda mají být hodnoty v tomto poli vyplněny nulami (Vyplnit nulami možnost), nebo pokud by měly být nepodepsané (Unsigned volba). Pokud Žádné je vybrán, hodnoty budou podepsány a nebudou přidány žádné další nuly. Pro plovoucí, dvojitá a desítková pole platí stejné možnosti typu jsou také zobrazeny, ale bez Nepodepsané volba. Pole těchto typů jsou vždy podepsána. Pro pole char a varchar mají možnosti Type dvě různé možnosti – Rozlišovat malá a velká písmena a Nerozlišují se malá a velká písmena . Pokud je vybrána možnost Insensitive, budou dotazy SQL, které odpovídají hodnotám v tomto poli, ignorovat rozdíly ve velikosti písmen.
- Chcete-li zabránit vkládání hodnot SQL NULL do tohoto pole, změňte Povolit hodnotu null? zadejte Ne . To může být užitečné, pokud by měl mít každý záznam hodnotu pro toto pole, a musí být vybráno, pokud toto pole bude součástí primárního klíče pro tabulku.
- Chcete-li, aby byla při přidávání záznamu do tabulky vložena výchozí hodnota a pro toto pole není zadána žádná hodnota, vyplňte Výchozí hodnotu Textové pole. Přirozeně musí být hodnota správného typu pro pole. Pokud vaše tabulka již obsahuje nějaké řádky, jejich hodnoty pro toto pole budou nastaveny na hodnotu, kterou zde zadáte, když bude nové pole přidáno.
- Pokud toto pole bude klíčem pro tabulku, změňte Část primárního klíče? výběr na Ano . Více než jedna polní část klíče, v takovém případě se jedná o kombinaci všech.
- Nakonec klikněte na Vytvořit . Pokud ve vašich zadáních nejsou žádné chyby, pole se přidá do tabulky a vrátíte se na stránku pro úpravy tabulky.
Nově vytvořená nebo existující pole lze také upravit podle následujících kroků. Provádění změn typu pole nebo zmenšení jeho velikosti však může vést ke ztrátě dat, pokud staré hodnoty nejsou kompatibilní s novým typem. Například převod varchar na int způsobí ztrátu všech nečíselných hodnot – nicméně převod int na varchar je obecně bezpečný, pokud je nová velikost dostatečně velká.
- Na hlavní stránce modulu klikněte na ikonu databáze, která obsahuje tabulku, a poté na ikonu tabulky. Tím se zobrazí stránka zobrazená na snímku obrazovky výše, která obsahuje názvy, typy a další podrobnosti všech existujících polí.
- Kliknutím na název pole, které chcete upravit, přejděte do formuláře pro úpravu pole.
- Chcete-li pole přejmenovat, upravte Název pole Textové pole.
- Chcete-li změnit typ pole, vyberte nový z nabídky *Typ dat*. Jak je vysvětleno výše, mělo by se to dělat opatrně.
- V závislosti na aktuálním typu se zobrazí různé vstupy pro úpravu jeho velikosti. Jsou to stejné, jaké jsou vysvětleny v kroku 4 výše uvedených pokynů pro vytvoření pole. Zvětšení velikosti pole nepoškodí žádná data, která obsahuje, ale jeho zmenšení způsobí zkrácení hodnot, pokud jsou delší než nová velikost.
- Možnosti typu , Povolit hodnoty null? , Výchozí hodnota a Součást primárního klíče? vstupy zde mají stejný význam jako v krocích vytváření pole. Změňte je, pokud chcete upravit tyto možnosti pro existující pole.
- Až budete hotovi, klikněte na Uložit tlačítko ve spodní části formuláře. Pole bude okamžitě aktualizováno a všechna data, která obsahuje, budou podle potřeby upravena nebo zkrácena.
Existující pole lze odstranit kliknutím na tlačítko Smazat tlačítko na formuláři pro úpravu pole namísto Uložit . Veškerá data, která obsahuje, budou okamžitě navždy smazána. Přirozeně nemůžete odstranit poslední pole v tabulce.
Typy polí
MySQL podporuje většinu stejných typů polí jako jiné databáze SQL. Nejlepším zdrojem informací o typech je oficiální dokumentace MySQL na http://dev.mysql.com/doc/refman/4.1/en/data-types.html (pro MySQL 3 a 4) nebo http://www .mysql.org/doc/refman/5.0/en/data-types.html (pro MySQL 5).
Novější verze MySQL mohou zavádět více typů, ale přesto byste měli být schopni upravovat data v polích nepodporovaných typů.
Zobrazení a úprava obsahu tabulky
Modul MySQL umožňuje zobrazit obsah libovolné tabulky v libovolné databázi. U tabulek, které mají primární klíč, mohou být jejich záznamy upraveny nebo odstraněny a také přidány nové. Bohužel neexistuje způsob, jak upravit obsah tabulky bez klíče, protože modul potřebuje nějaký způsob identifikace konkrétních záznamů. Všechny tabulky v databázi by ji však měly mít.
Chcete-li zobrazit obsah tabulky, postupujte takto:
- Na hlavní stránce klikněte na ikonu databáze, která obsahuje tabulku, a poté na ikonu tabulky samotné.
- Ve formuláři pro úpravu tabulky klikněte na Zobrazit data tlačítko ve spodní části. Tím se dostanete na stránku obsahující tabulku prvních 20 řádků tabulky.
- Pokud tabulka obsahuje více řádků, než lze zobrazit na jedné stránce, začátek a konec viditelného rozsahu a celkový počet řádků se zobrazí nahoře. Vedle něj jsou šipky doleva a doprava pro přesun na dalších nebo předchozích 20 záznamů.
- U velkých tabulek se ve spodní části stránky zobrazí také vyhledávací formulář. Chcete-li jej použít, vyberte z první nabídky název pole, z druhé typ porovnání a do posledního textového pole zadejte hodnotu, kterou chcete vyhledat. Když Hledat po kliknutí na tlačítko se zobrazí pouze řádky, pro které zvolené pole odpovídá. Chcete-li přepnout zpět na zobrazení všech záznamů, klikněte na Obnovit vyhledávání odkaz, který se nyní zobrazuje nad tabulkou. obsahuje typ porovnání najde záznamy, ve kterých pole obsahuje zadaný text, zatímco se shoduje type najde záznamy, pro které hodnota pole odpovídá vzoru SQL použitému v podobné klauzuli. V takovém vzoru % odpovídá libovolnému řetězci znaků a _ odpovídá libovolnému jednotlivému znaku – stejně jako * a ? udělat na příkazovém řádku shellu.
- Při prohlížení velkého stolu tlačítko označené Přejít na se také zobrazuje v dolní části stránky. Pokud do sousedního pole zadáte číslo a kliknete na tlačítko, displej se okamžitě přesune na tento řádek.
Pokud má tabulka primární klíč, lze stejnou stránku použít také k úpravě, mazání nebo přidávání záznamů. Záznamy, které chcete upravit, je třeba nejprve vybrat pomocí zaškrtávacích políček napravo od každého řádku nebo pomocí Vybrat vše a Invertovat výběr Odkazy. Když kliknete na tlačítko *Upravit vybrané řádky*, stránka se znovu zobrazí s hodnotami všech vybraných záznamů v textových polích. Proveďte jakékoli změny, které chcete, a klikněte na tlačítko Uložit tlačítko v dolní části stránky pro aktualizaci databáze. Nebo stiskněte Zrušit pokud chcete ukončit úpravy bez uložení změn.
Chcete-li odstranit záznamy, vyberte je pomocí stejných zaškrtávacích políček a odkazů pro výběr a klikněte na tlačítko Odstranit vybrané řádky knoflík. Vybrané záznamy budou okamžitě odstraněny z databáze bez dalšího potvrzení.
Chcete-li přidat nový záznam, klepněte na Přidat řádek tlačítko pod tabulkou. Zobrazí se další řádek obsahující prázdná textová pole, do kterých můžete zadat nové podrobnosti. Klikněte na Uložit přidá nový záznam do tabulky a posune displej tak, abyste viděli nový řádek. Případně můžete kliknout na Zrušit pokud si to s přidáním záznamu rozmyslíte.
Normálně se záznamy upravují nebo přidávají do textových polí, která se v tabulce objeví v příslušných sloupcích. Pokud však upravujete tabulku, která obsahuje objekt blob nebo textové pole, nebo pokud je povolena možnost konfigurace modulu *Použít rozhraní pro přidávání svislých řádků*, použije se jiné rozvržení. Místo toho jsou textová pole pro pole uvedena v samostatném poli uvnitř nebo pod tabulkou s popisky názvů polí vpravo. U textových polí nebo polí blob se zobrazí textové pole, takže v případě potřeby můžete zadat více řádků textu.
Odstranění tabulek a databází
Když je tabulka odebrána z databáze, všechny záznamy a pole, která obsahuje, budou ztraceny. Můžete odstranit jakoukoli tabulku, i když odstranění těch v databázi mysql je špatný nápad, protože obsahují důležité informace o řízení přístupu k MySQL. Chcete-li jeden odstranit, postupujte takto:
- Na hlavní stránce modulu klikněte na ikonu databáze, ze které chcete tabulku odebrat, a poté na ikonu tabulky samotné.
- Klikněte na Přehodit tabulku tlačítko pod seznamem polí. Tím se dostanete na potvrzovací stránku, která se vás zeptá, zda jste si jisti, a sdělí vám, kolik záznamů bude smazáno.
- Chcete-li pokračovat, klikněte na Přehodit tabulku znovu tlačítko. Jakmile bude odstraněna, vrátíte se na seznam dochovaných tabulek v databázi.
Je také možné smazat celou databázi a všechny tabulky a záznamy v ní. Libovolnou databázi lze odstranit, ale smazání databáze mysql je velmi špatný nápad. Jako obvykle, pokud jste si nevytvořili zálohu, neexistuje způsob, jak smazání vrátit zpět.
Za předpokladu, že opravdu chcete odstranit databázi, postupujte takto:
- Na hlavní stránce klikněte na ikonu databáze, kterou chcete odstranit.
- Klepněte na Drop Database tlačítko pod seznamem tabulek. Zobrazí se potvrzovací stránka, která vám řekne, kolik tabulek a záznamů bude ztraceno, pokud budete pokračovat.
- Chcete-li pokračovat v mazání, klikněte na Drop Database a po dokončení se vrátíte na hlavní stránku modulu.
- Případně můžete odstranit všechny tabulky a jejich záznamy kliknutím na Jen smazat všechny tabulky namísto. Samotná databáze zůstane prázdná.
Provádění příkazů SQL
Modul MySQL také poskytuje jednoduché rozhraní pro spouštění SQL příkazů v databázi a zobrazení jejich výstupu. Postup použití:
- Na hlavní stránce klikněte na ikonu databáze, ve které chcete spouštět příkazy.
- Klikněte na Spustit SQL pod seznamem ikon tabulky. Tím se dostanete na stránku pro zadávání SQL příkazů, spouštění souborů příkazů a načítání dat do databáze.
- Do textového pole v horní části stránky zadejte libovolný příkaz SQL a stiskněte Provést knoflík. Pokud došlo k chybě ve vaší syntaxi SQL nebo příkaz nelze provést, zobrazí se chybová zpráva z MySQL. V opačném případě se zobrazí tabulka výsledků z SQL (pokud existuje). Pouze příkazy SELECT poskytují výsledky - UPDATE, INSERT a další příkazy, které upravují záznamy, nikoli.
- Po zobrazení výsledků se vraťte do formuláře pomocí *Return to Execute SQL form*.
- Každý úspěšně provedený příkaz je přidán do historie databáze. Předchozí příkaz SQL můžete znovu spustit tak, že necháte textové pole prázdné, vyberete jej z nabídky níže a poté stisknete Provést . Chcete-li vymazat historii příkazů, klikněte na Vymazat historii místo toho tlačítko. To může být užitečné, pokud se to zahlcuje starými příkazy, které nepotřebujete znovu použít.
Stejnou stránku lze použít ke spuštění více příkazů z textového souboru a zobrazení jejich výstupu. Protože proces je úplně stejný jako při obnově zálohy, je vysvětlen v části obnovy Zálohování a obnova databáze sekce níže.
Zálohování a obnova databáze
MySQL Zálohování všech databázíPokud některá z vašich databází obsahuje důležité informace, měla by být pravidelně zálohována pro případ, že by selhání disku nebo chyba SQL způsobilo ztrátu dat. Je také dobré vytvořit zálohu před provedením nějaké potenciálně rizikové operace, jako je změna typu pole nebo spuštění složitého příkazu SQL, který upravuje mnoho záznamů.
Chcete-li použít modul k vytvoření zálohy, postupujte takto:
- Na hlavní stránce klikněte na ikonu databáze, kterou chcete zálohovat.
- Klikněte na Záložní databázi tlačítko pod seznamem tabulek. Tím se dostanete do formuláře pro zadání cíle zálohování a možností.
- V části Zálohovat do souboru zadejte úplnou cestu k souboru, do kterého má být záloha zapsána, například /tmp/backup.sql . Pokud soubor již existuje, bude přepsán.
- Chcete-li omezit zálohování pouze na některé záznamy, zrušte výběr možnosti Všechny řádky' pro pole *Pouze záložní řádky vyhovující klauzuli where* a do sousedního pole zadejte klauzuli SQL WHERE, například foo ='bar . Toto funguje pouze v případě, že klauzule je platná pro všechny tabulky v databázi, takže v příkladu by všechny tabulky musely mít foo pole.
- Pokud Přidat příkazy přetažení tabulky do zálohy? pole je nastaveno na Ano , bude záloha obsahovat příkazy SQL pro odstranění existujících tabulek stejného jména při obnově. To znamená, že pokud jej obnovíte na jiném systému, data v těchto tabulkách budou nahrazena novými daty ze zálohy. Pokud Ne je vybrána, obnovená data budou přidána ke všem, která již existují. Nejlepší volba opravdu závisí na tom, co se snažíte dělat. Pro normální zálohu byste měli vybrat Ano takže při obnově zálohy budou odstraněna všechna poškozená nebo konfliktní data. Pokud však přenášíte záznamy do jiného systému nebo databáze Ne místo toho by mělo být vybráno, aby se stávající záznamy v cílové tabulce neztratily.
- Chcete-li provést zálohu, klepněte na Zálohovat nyní ve spodní části formuláře a zobrazí se stránka s jeho úspěchem nebo neúspěchem.
Záložní soubory MySQL jsou ve skutečnosti pouze seznamy příkazů SQL CREATE TABLE a INSERT, které při spuštění obnoví databázi do stavu, ve kterém byla při vytvoření zálohy. Ačkoli to zabere více místa na disku než více komprimovaný binární formát, umožňuje vám to v případě potřeby snadno prohlížet a upravovat soubor. Znamená to také, že záložní soubor lze použít na systému s jinou architekturou, protože soubor obsahuje pouze text ASCII.
Pokud máte databázi, která se používá pro důležitý produkční účel, měla by být pravidelně zálohována, například jednou denně. Místo toho, abyste se každý den řídili výše uvedenými pokyny, můžete použít modul Plánované úlohy cronu (popsaný v kapitole 10) k vytvoření úlohy, která za vás provede zálohování. Chcete-li zjistit, jaký příkaz spustit, pomocí výše uvedených pokynů nejprve vytvořte zálohu a poté navštivte modul Webmin Actions Log (popsaný v kapitole 54), kde najdete příkaz, který použil.
Jakmile byl vytvořen záložní soubor, lze jej obnovit na stejném systému nebo na jiném serveru se systémem MySQL. V závislosti na tom, co Přidat příkazy přetažení tabulky do zálohy? bylo v době zálohování nastaveno na hodnotu, obsah všech existujících tabulek se stejnými názvy jako v záloze může být smazán. Proto byste měli obecně obnovit pouze v případě, že tabulky neexistují nebo obsahují zastaralá nebo neplatná data, která chcete přepsat.
Protože záložní soubor je pouze seznam příkazů SQL, proces obnovy zahrnuje pouze spuštění všech příkazů v souboru. To znamená, že můžete postupovat podle stejných kroků pro spuštění souboru vašich vlastních příkazů:
- Na hlavní stránce modulu klikněte na ikonu databáze, do které má být záloha obnovena.
- Klikněte na Spustit SQL a přejděte dolů do části *Vyberte soubor příkazů SQL pro spuštění v databázi*.
- Pokud je záložní soubor v systému, na kterém běží MySQL a Webmin, zvolte Z místního souboru a do sousedního textového pole zadejte úplnou cestu k souboru. Pokud je záloha na počítači, na kterém běží váš prohlížeč, zvolte *Z nahraného souboru* a použijte Procházet tlačítko pro výběr záložního souboru.
- Klepněte na tlačítko Provést tlačítko pro obnovení zálohy nebo provedení příkazů SQL v souboru. Zobrazí se stránka se seznamem všech výstupů z MySQL v průběhu provádění. Obecně nebudou žádné, pokud nedojde k chybě nebo pokud soubor neobsahuje příkazy SELECT.
Správa uživatelů MySQL
Uživatelská oprávnění MySQLVáš databázový server MySQL vyžaduje, aby se všichni klienti před spuštěním příkazů SQL autentizovali pomocí uživatelského jména a hesla. Má své vlastní tabulky uživatelů, hesel a oprávnění, které jsou konzultovány, když se klient pokouší přihlásit, spíše než uživatelské soubory /etc/passwd a /etc/shadow Unix. Pro každého uživatele lze definovat podrobná oprávnění, aby bylo možné omezit druhy příkazů SQL, které může používat, klientské hostitele, ze kterých se může připojit, a databáze, tabulky a pole, která může upravovat.
Po první instalaci MySQL se obvykle může přihlásit pouze uživatel root. Tento uživatel bude mít oprávnění pro přístup ke všem databázím a tabulkám a provádění všech akcí, a proto se obecně používá pouze pro účely administrace. Pokud chcete napsat aplikaci, která používá databázi, je dobré vytvořit pro tento účel dalšího uživatele a nastavit aplikaci tak, aby se přihlašovala jako tento uživatel.
Standardní instalace MySQL také vytvoří Anonymní uživatel bez hesla a přístup k databázím počínaje testem. Tento speciální uživatel se používá pro jakýkoli pokus o přihlášení, pro který nebyl nalezen žádný jiný odpovídající uživatel. Anonymní uživatelé jsou podrobněji vysvětleni níže.
Vytvořit uživateleChcete-li přidat uživatele, postupujte takto:
- Na hlavní stránce modulu klikněte na Uživatelská oprávnění ikona. Tím se dostanete na stránku se seznamem stávajících uživatelů, jak je znázorněno na snímku obrazovky níže.
- Klikněte na odkaz Vytvořit nového uživatele nad nebo pod tabulkou přejděte na formulář pro vytvoření uživatele.
- V části Uživatelské jméno vyberte druhý přepínač a zadejte jméno tohoto uživatele. I když je možné vytvořit více uživatelských záznamů se stejným jménem, jak je vysvětleno později, tento nový by měl být jedinečný.
- Za předpokladu, že chcete, aby uživatel měl heslo, změňte Heslo pole na Nastavit na a zadejte jej do sousedního pole. Pokud zvolíte Žádné , pak není třeba zadávat žádné heslo a pokusy o přihlášení pomocí hesla budou odmítnuty.
- Chcete-li tomuto uživateli povolit přihlášení pouze z konkrétního hostitele, vyberte druhý přepínač v části Hostitelé a do textového pole zadejte název hostitele. The hostname must be the same as the one returned by a reverse lookup of the client's IP address, which will almost always be a complete hostname like pc.example.com instead of just server . You can enter an IP address instead, or a hostname or IP address SQL pattern like %.example.com . To allow a user to connect only from the same system as the database server is running on, enter localhost as the host. If Any is selected, this user will be able to connect from any host. Be careful when creating a user who has a host specified - if he tries to connect from somewhere else and an Anonymous user exists with a matching host, he will be logged in as the Anonymous user instead!
- In the Permissions list, select the entries for the actions that you want the user to be able to perform. For an application user, being able to select, insert, update and delete records is usually enough. Un-trusted users should never be given permissions beyond Drop tables , as that would allow him to harm the database, access arbitrary files or enhance his own permissions. If a user does not have any permissions at all, he will be unable to connect unless some have been granted for a specific database or host (as explained in the next section).
- To create the user, click the Save button at the bottom of the page. The new MySQL login will be usable immediately, and will have access to all databases and tables with the permissions specified in step 6. See the next section in this chapter for information on how to restrict a user to only certain databases or tables.
When a client tries to login, MySQL searches for the first matching user and host in the list of users. The server always checks entries with specific hostnames before those that allow any host, and Anonymous user entries before those for a specific user. This means that a user may end up with the Anonymous permissions even though he is in the user list with greater privileges. Due to the confusion this can cause, I recommend deleting all anonymous user entries unless you fully understand their effects.
It is possible and even useful to have multiple entries for the same user in the list, as long as they have different hostnames. For example, if you want to allow the user fred to login from only clients server.example.com and www.foo.com , you would need to create two entries from fred with the Host field set differently. The should have the same password and permissions though, unless you want to require a different password or grant different permissions depending on the host the user is connecting from.
New and existing users can be edited by clicking on their names in the list, which brings up an editing form almost identical to the one used for creating a user. The only different is that the Password field has a Don't change option which is selected if the user has a password, and which tells Webmin to leave the password unchanged when the user is saved. After making changes, click the Save button at the bottom of the form to update the user in the database. Or to delete it, hit the Delete button. If there are multiple entries for the same user, you will have to update them all individually if changing the password or permissions.
Unless you have already created another administration user with full privileges, the root user should not be deleted. Because this Webmin module normally logs in a root itself, modifying or removing this user may force you to login to MySQL again as explained in the introduction to the module earlier in the chapter. By deleting the root user or removing its privileges, it is possible to deny yourself access to the database, which can only be fixed using command-line programs like mysqladmin.
Like many other modules, the MySQL Database Server module can be configured to automatically create, update or delete a MySQL user when the same thing happens to a corresponding Unix user. This can be useful if you allow some of the Unix users on your system to access databases, and want to keep their passwords and usernames synchronized.
To set up synchronization, the steps to follow are:
- On the module's main page, click on the User Permissions icon. Scroll down to the form below the list of existing MySQL users.
- If you want a new MySQL user to be created for each new Unix user, check the Add a new MySQL user when a Unix user is added box. Then select the permissions that should be granted to the user from the list to the right. When a MySQL user is automatically added, its will be allowed to login from any host.
- If you want MySQL users to be renamed or have their passwords changed when the same thing happens to matching Unix users, check the *Update a MySQL user when the matching Unix user is modified* box. If more than one entry exists for the same user, they will all be effected.
- To have a MySQL user deleted at the same time as the Unix user of the same name, check the *Delete a MySQL user when the matching Unix user is deleted* box. If more than one entry exists for the same user, they will all be deleted.
- Click the Save button to make the new synchronization settings active.
Managing database, host, table and field permissions
Users created by following the instructions in the previous section have access to all databases on the server with the same permissions. However, it is possible to give a user access to only specific databases by following the steps below:
- Make sure the user does not have any permissions on the User Permissions page. Any that he has set here will apply to all databases, which is not what you want.
- On the module's main page, click on the Database Permissions icon. This will bring up a list of users and the privileges they have for specific databases.
- Click on the Create new database permissions link above or below the list.
- In the form that appears, the Databases field controls which databases he will have access to. You can either select the Any radio button to grant permissions for all databases, select the second radio button to grant access to the database selected from the menu, or choose the final button to grant access to databases whose names match the SQL pattern entered into the adjacent field. Typically the second option is the one that you want to select, so that you can grant access to a single database. If the user should have access to more than one, you will need to add multiple database permissions entries.
- In the Username field, select the second radio button and enter the name of the MySQL user to whom access should be granted.
- The Hosts field allows you to choose which client host(s) the user will be able to connect to the database from. You should normally select Any , which gives him access from anywhere - unless the user himself is prevented from connecting from some hosts, explained in the Managing MySQL users section .
- From the Permissions list, select the privileges that the user should have for the chosen database. These will be added to any that are set for the user on the User Permissions page.
- Click the Save button to add and activate the new permissions. You will be returned to the database permissions list.
You can edit database permissions by clicking on a database name from the list. This will take you to an editing form identical to the creation form in which the database, username, hosts or permissions can be changed. The Save button saves and activates any changes, while the Delete button removes the permissions from the database.
When MySQL is first installed, database permissions for the Anonymous user in the test and test_% databases will be created automatically. Assuming the Anonymous user exists in the User Permissions page, these give anyone who can connect to MySQL access to records in those databases. Unless you are making use of anonymous logins, these database permissions can be safely deleted.
MySQL also allows permissions to be granted on databases to all users connecting from certain client hosts. This can be useful if you want to increase the privileges that a particular client system has, such as a web server connecting to your database server. To add host permissions, the steps to follow are:
- On the module's main page, click on the Host Permissions icon. This will take you to a page listing existing permissions granted to client hosts, if any. When MySQL is installed, no permissions of this type are initially defined.
- Click on the Create new host permissions to bring up a form for adding a new host permissions entry.
- If the permissions should apply to all databases, select the Any radio button in the Databases field. If they are for only a specific database, select the second radio button and choose a database from the menu next to it. If you want to grant permissions to databases whose names match an SQL pattern, select the final radio button and enter the pattern into the adjacent text field.
- In the Hosts field, select the second radio button and enter a hostname, IP address or hostname or IP pattern (like %.example.com or 192.168.1.% ) into the field next to it. Selecting the Any button isn't particularly useful.
- From the Permissions menu, choose those privileges that will be granted to all users connecting to the chosen database from the specified host. These will be added to any other permissions that are granted on the User Permissions or Database Permissions pages.
- Click the Save button to activate the new client host permissions.
As usual, you can edit existing an host permissions entry by clicking on the database name from the list, editing fields and clicking Save . Or you can remove it with the Delete button.
MySQL also supports the granting of permissions to specific tables and fields to users connecting from certain hosts. Webmin allows you to set these up by clicking on the Table Permissions and Field Permissions icons on the main page. However, as they are quite complex and rarely used, they are not covered in this chapter.
Module access control
Normally a Webmin user who has access to the MySQL Database Server module can manage all databases and use all of the module's features. However, as WebminUsers explains it is possible to restrict what a user can do with a module. In this case, you can grant access to only certain databases, control the directory that backups can be written to, and restrict the creation and deletion of databases. This can be useful if various databases on your server are owned by different people, and you want to give each of them a Webmin login to manage only those that belong to them.
To set up this kind of module access control, the steps to follow are:
- In the Webmin Users module, click on MySQL Database Server next to the name of a user or group who has access to the module.
- On the access control form, change the Can edit module configuration? field to No . This is necessary to prevent the user changing the programs that the module uses for accessing the database.
- In the Databases this user can manage field, choose the Selected option. Then select the databases he should have access to from the list below.
- Change the Can create new databases? field to No . There is no reason that a restricted user of this type should be able to add new databases.
- Unless you want the user to be able to delete his own databases, change the Can drop databases? field to No . Leaving it set to Yes is harmless though, as he will only be able to delete those that you have granted him access to.
- Change the Can stop and start MySQL server? field to No .
- If you want this Webmin user to be able to control access by MySQL users to his databases, change the Can edit permissions? field to Only for managed databases . This will give him access to the Database, Host, Table and Field Permissions pages, but limit him to viewing and editing entries for the databases he is granted access to. To deny access to MySQL permission management altogether, select No instead. Choosing Yes is a bad idea, as it would allow the user to create MySQL users with access to all databases on the server.
- If the Can edit table data? field is set to No , the user will not be able to create tables, edit fields, run SQL commands or make backups. Instead, he will only be able to use the module's record viewing and editing feature.
- When the Login to MySQL as field is set to *Username from Module Config*, all database actions performed by this user will be done as the MySQL user set in the module configuration, typically root. However, you may want the Webmin user to login as a less-privileged MySQL user as an additional security precaution. This way, even if the user finds a way to defeat the module's restrictions he will still not be able to execute SQL commands as root. To use a different login, select the Username option and enter a valid MySQL login and password into the adjacent fields. This alternate user must have the privileges to perform everything that the module needs to do though, such as creating tables and possibly granting permissions.
- Normally Webmin runs the mysqldump command to make backups as the root Unix user, and allows the backup file to be created anywhere on your system. Because this may allow important files to be overwritten, you should change the *Backup file directory* field to a safe directory for creating backups in, such as /home/someuser/backup . Better still, the Write backup as Unix user field should be changed to a user other than root, such as the Webmin user's Unix login. The mysqldump command will be run as this user instead, which prevents it from being used to overwrite files.
- Finally, to make the new access control restrictions active, click Save .
If you want to give a large number of users access to MySQL though a web interface, an alternative to configuring the Webmin module for each user is to install Usermin. It has a MySQL module with an identical interface, and can be easily configured to limit which databases are visible. See chapter 47 for more information.
Module Configuration
Module ConfigurationLike many other modules, this one has several options that you can set by clicking on the Module Config link in the top-left corner of the main page. Those fields listed under *Configurable option* relate to the module's user interface and the method it uses to connect to the database, while those under *System configuration* define the paths to the MySQL programs and files.
Unless you have installed the database server in a different directory to the default for your operating system, fields in the second section do not generally need to be changed. This can happen if you installed MySQL from the source code instead of using the package supplied with your Linux distribution, or if you have two copies of MySQL installed and are configuring a clone of the module (covered in Webmin Configuration) to manage the second install.
If you have multiple copies of MySQL installed on your system, you should clone this module once for each server. The last three configuration options can then be customised to connect to each of the MySQL installs, which will probably be listening on different ports or use different socket files.