phpMyAdmin VS Adminer

MySQL

Aplikace phpMyAdmin je nepsaný standard pro správu databáze MySQL z prostředí webového prohlížeče a mnoho uživatelů pro správu této databáze ani žádný jiný nástroj nepoužívá. phpMyAdmin ale není jediný nástroj svého druhu a jiné aplikace se mu snaží konkurovat. Jednou z těchto aplikací je Adminer, který je stejně jako phpMyAdmin napsaný v PHP, ale některými vlastnostmi se snaží odlišit.

Poznámka: Autor článku je zároveň autorem aplikace Adminer, článek je proto pochopitelně zaujatý, i když se snaží být férový.

Instalace

phpMyAdmin 3.2.4 lze stáhnout ve dvou verzích:

  • Verze se všemi jazyky zabírá po rozbalení 11,377 kB v 667 souborech a její zkopírování na běžný webhosting trvá několik minut.
  • Jednojazyčná anglická verze zabírá 4,937 kB, jiné jednojazyčné verze se ke stažení nenabízí.

Adminer 2.2.1 zabírá 174 kB v jednom souboru a na hosting se zkopíruje prakticky okamžitě. Jednojazyčná anglická verze má 119 kB, ke stažení je i jednojazyčná česká a slovenská verze.

phpMyAdmin používá licenci GPL 2, Adminer o něco vstřícnější licenci Apache 2, která není nakažlivá.

Co se požadavků na server týče, phpMyAdmin od verze 3 vyžaduje PHP 5.2+ a MySQL 5, pro práci se staršími verzemi je nutné použít starší, stále udržovanou řadu 2. Adminer se spokojí s PHP od verze 4.3 a s MySQL od verze 4.1. phpMyAdmin od uživatele vyžaduje zapnuté cookies, Adminer se obejde i bez nich. Adminer pro práci s databází dokáže využít i extenzi PDO, phpMyAdmin ne.

phpMyAdmin je k dispozici v 57 jazycích, Adminer ve 12, základní světové jazyky a čeština jsou k dispozici v obou.

phpMyAdmin dovoluje nastavit celkem 143 konfiguračních direktiv, mezi jinými třeba i tu určující, kam povede odkaz u ikony ve výpisu tabulek. Výchozí hodnota této konfigurační direktivy se navíc v průběhu času změnila, takže uživatelé, kteří se ikonu naučili používat (což není zcela intuitivní), bývají zmateni. Adminer žádnou možnost konfigurace nenabízí, všechny instalace se tudíž chovají stejně.

phpMyAdmin obsahuje instalační skript, který dovoluje nastavit některé konfigurační direktivy (jiné je potřeba přímo zadat do PHP kódu). Tento skript je obvykle nezbytné spustit, protože ve výchozí konfiguraci nedovoluje phpMyAdmin zadat název serveru nebo se přihlásit pod uživatelem bez hesla. Adminer vzhledem k absenci konfigurace žádnou instalaci nevyžaduje.

Adminer

Vzhled

phpMyAdmin nabízí uživateli výběr mezi dvěma vzhledy, dalších 12 vzhledů lze navíc stáhnout, samostatně lze kromě toho nastavit barvu pozadí. Jeden vzhled má kolem 120 souborů. Adminer vedle vestavěného vzhledu dovoluje stáhnout 5 dalších, každý vzhled je tvořen jediným souborem.

phpMyAdmin používá pro zobrazení stránek rámy a samostatná okna. To uživateli znemožňuje ukládat si jednotlivé stránky do oblíbených položek a otvírat je do samostatných panelů. Adminer na druhou stranu rámy nevyužívá, díky čemuž si uživatel každou stránku může uložit do oblíbených položek nebo otevřít do samostatného panelu.

phpMyAdmin používá interní zvýrazňovač syntaxe SQL dotazů. Ten ve výchozím nastavení dotaz zároveň i přeformátuje, což může být někdy užitečné a jindy na škodu. Adminer používá externí JavaScriptový zvýrazňovač syntaxe, který zároveň vytváří odkazy do dokumentace použitých příkazů. Adminer navíc detekuje verzi MySQL a odkazuje do dokumentace používané verze.

Možnosti rozšíření

phpMyAdmin možnosti svého rozšíření staví na bohaté konfiguraci a na vytvoření pomocných tabulek v databázi. Pomocí nich lze např. ke sloupcům zadat informace o typu dat, takže phpMyAdmin pak místo binárních dat zobrazuje obrázek. Adminer dovoluje vytvořit objekt, pomocí kterého lze kompletně změnit jednotlivé části aplikace (např. si vytvořit vlastní způsob autorizace nebo libovolným způsobem upravit výpis nebo editaci dat). Tento způsob je o něco náročnější (vyžaduje programování), ale nabízí podstatně širší možnosti přizpůsobení.

Import a export

phpMyAdmin i Adminer dovolují importovat data ve formátu SQL a CSV, volitelně komprimovaná. Adminer navíc umožňuje načíst SQL soubor z disku serveru, což dovoluje spustit i velké soubory, jejichž přenos je v konfiguraci PHP zakázaný (soubor lze nahrát např. pomocí FTP). phpMyAdmin tuto možnost nabízí také, ale je potřeba ji nakonfigurovat. Pro CSV import dovoluje phpMyAdmin použít příkazy INSERT, INSERT IGNORE nebo REPLACE. Adminer používá příkaz INSERT s klauzulí ON DUPLICATE KEY UPDATE, která jako jediná provede import správně. Při CSV importu lze v phpMyAdminu ignorovat několik prvních řádek, Adminer si na druhou stranu dokáže z prvního řádku načíst seznam sloupců, které se pro zpracování souboru použijí.

phpMyAdmin dovoluje exportovat data ve 12 formátech jako např. LaTeX nebo Word. Adminer nabízí jen formáty SQL a CSV, u SQL ale nabízí i možnost tzv. ALTER exportu, který slouží primárně k synchronizaci vývojového a produkčního serveru (vypíše příkazy, které je nutné spustit, aby stav cílové databáze odpovídal stavu zdrojové databáze, obvykle  ALTER TABLE).

phpMyAdmin a Adminer se liší ve způsobu hromadné editace záznamů. phpMyAdmin při hromadné editaci zobrazí pro každý záznam vlastní formulář, které uživatel edituje zvlášť. Adminer nabízí skutečně hromadnou editaci, kdy se všechny záznamy editují najednou (u každého sloupce lze nechat původní hodnotu, nastavit novou hodnotu nebo provést relativní operaci jako je třeba přičtení čísla). Pro stejnou úpravu třeba všech záznamů v tabulce phpMyAdmin využít nelze.

Pokud vás zajímá, jak využít správně všech výhod, které MySQL nabízí, a pokud se chcete naučit správně používat MySQL jako relační databázi, přijďte na školení Akademie Root.cz s tématem Návrh a používání MySQL databáze, kde se dozvíte vše potřebné od návrhu až po samotné využití MySQL ve vašich projektech. Školení je vhodné jak pro důkladné seznámení se základy databází, tak pro využití MySQL u náročnějších projektů. Školit vás bude Jakub Vrána, autor tohoto článku.

Cizí klíče

phpMyAdmin má velmi slabou podporu pro cizí klíče, které se dají vytvářet v tabulkách typu InnoDB. Na speciální stránce lze vytvořit pouze jednosloupcové cizí klíče, s kterými se dále nikde nepracuje. Vícesloupcové cizí klíče nelze vytvořit vůbec. Adminer naproti tomu dovoluje jednosloupcové cizí klíče vytvořit přímo při vytváření nebo úpravě struktury tabulky, podle názvu sloupce navíc vytvoření cizího klíče automaticky nabízí. Pro vytvoření vícesloupcového cizího klíče a jejich úpravy slouží samostatná stránka.

V Admineru se z cizích klíčů při výpisu dat automaticky vytváří odkazy. V phpMyAdminu se tyto odkazy vytváří pouze po vytvoření a konfiguraci speciálních tabulek. Ve verzi Adminer Editor se navíc vytváří i zpětné odkazy (např. na všechny knihy daného autora).

V phpMyAdminu lze schéma databáze zobrazit jen po konfiguraci speciálních tabulek ve formátu PDF. Pozici tabulek ve schématu lze upravit pouze ručně zadáním souřadnic. V moderních prohlížečích lze použít také návrhář využívající značku <canvas>. Adminer schéma databáze včetně propojení tabulek zobrazuje přímo v HTML stránce s možností tabulky přetahovat pomocí myši.

Použitelnost

Při vytvoření tabulky v phpMyAdminu je nutné předem stanovit počet sloupců. Pokud si teprve při jejím zadávání uvědomíme, že potřebujeme ještě nějaké sloupce navíc, je nutné odeslat formulář. phpMyAdmin navíc tabulky do tří polí zobrazuje po sloupcích a od čtyř polí po řádcích, takže se při přidání čtvrtého sloupce tabulka celá přeskládá. Adminer naproti tomu do tabulky přidává další pole automaticky podle potřeby. Obdobný rozdíl ve způsobu práce je vidět třeba i u vícesloupcových indexů.

Při změně struktury tabulky je v phpMyAdminu nutné nejprve vybrat, kam chceme jednotlivé sloupce přidat. Pokud je chceme přidat na různá místa, je nutné to udělat ve více krocích. Adminer naproti tomu dovoluje sloupce přidávat přímo v editaci struktury tabulky. Kromě toho umožňuje změnit i pořadí sloupců, což phpMyAdmin vůbec neumožňuje.

Pro editaci výčtového typu enum a set nabízí Adminer komfortní editor, kde se každá položka píše na jeden řádek textového políčka. Uživatelé phpMyAdminu se musí řídit následujícím návodem:

Pokud je sloupec typu „enum“ nebo „set“, zadávejte hodnoty v následujícím formátu: ‚a‘,‚b‘,‚c‘… Pokud potřebujete zadat zpětné lomítko („“) nebo jednoduché uvozovky („‚“) mezi těmito hodnotami, napište před ně zpětné lomítko (příklad: ‚\xyz‘ nebo ‚a‘b‘).

V phpMyAdminu i v Admineru lze existující záznamy duplikovat, nástroje ale používají opačný postup operací. V phpMyAdminu se vyvolá běžným způsobem editace záznamu a po dokončení úprav uživatel vybere, že se má záznam uložit jako nový. To může vést k tomu, že uživatel delší dobu upravuje záznam určený k duplikování, ale pak ho po paměti uloží a tím přepíše původní záznam. Adminer proto volí opačný postup úkonů – nejprve se vybere operace klonování a pak se nový záznam uloží běžným způsobem.

phpMyAdmin i Adminer nabízí výpis proměnných na serveru, Adminer k nim ale přidává i odkazy do dokumentace každé z nich (najít je v dokumentaci MySQL dá totiž trochu práce). phpMyAdmin na druhou stranu obsahuje popis všech stavových informací.

phpMyAdmin zobrazuje velikost tabulek spolu s jednotkami, Adminer ji zobrazuje v bajtech. Díky tomu jsou na první pohled snadno rozpoznatelné velké tabulky od malých, v phpMyAdminu se dá podle velikosti zase třídit.

Při zadávání binárních dat dovolují oba nástroje nahrát soubor z disku, phpMyAdmin ale tato binární data nedovoluje stáhnout (možné to je pouze při vytvoření pomocných tabulek a explicitního určení všech sloupců, jejichž obsah má jít stáhnout). Adminer stažení binárních dat nabízí vždy, zobrazitelná data (např. text ve sloupci typu blob) navíc také zobrazuje.

Funkční výbava

phpMyAdmin i Adminer drží krok s vývojem MySQL a dovolují pracovat i s moderními objekty jako jsou triggery, uložené procedury nebo události. Zatímco ale Adminer nabízí komfortní uživatelské rozhraní, kde uživatel vyplňuje jednotlivé parametry do připravených kolonek a stejným způsobem může všechny objekty i vytvářet, phpMyAdmin se omezuje na výpis existujících objektů a vypsání SQL příkazu pro jejich vytvoření. Uživatelské rozhraní k těmto objektům tedy vůbec neexistuje a uživatel musí přesně znát syntaxi SQL dotazů, pomocí kterých je může vytvářet. Stejně tak phpMyAdmin neumožňuje uložené procedury zavolat jinak než pomocí ručního sestavení SQL příkazu.

phpMyAdmin dovoluje vytvořit pohled z libovolného SQL příkazu (pohled se ale potom automaticky nezobrazí v seznamu tabulek), neumožňuje pohledy ale měnit. V přehledu tabulek databáze také chybí odkaz pro výpis záznamů pohledů. Adminer pro vytvoření a správu pohledů nabízí vlastní uživatelského rozhraní.

Adminer dovoluje při výpisu tabulky na jednotlivé sloupce aplikovat funkce (dokonce i agregační), phpMyAdmin nic takového nenabízí. Adminer dovoluje tabulku třídit podle více sloupců (např. nejdřív podle data a potom podle času), phpMyAdmin obdobnou funkci nabízí jen komplexním databázovým dotazem.

SQL příkazu nabízí oba nástroje různou funkčnost. phpMyAdmin dovoluje dotaz profilovat, Adminer dovoluje vypsat více výsledků v rámci jednoho zavolání příkazu. Adminer navíc zobrazuje odkazy pro editaci záznamů i u dotazů spojujících více tabulek. Oba nástroje dovolují příkaz vysvětlit, phpMyAdmin k tomu otevře novou stránku, Adminer tuto informací zobrazí přímo pod dotazem. Oba nástroje ukládají historii provedených příkazů, Adminer do této historie ale ukládá i příkazy provedené přes uživatelské rozhraní.

Adminer

Bezpečnost

Adminer za dobu své existence opravil dvě bezpečnostní chyby, phpMyAdmin za stejnou dobu dvacet (za celou dobu celkem 47). phpMyAdmin navíc nenabízí spolehlivou ochranu proti útoku ClickJacking (kvůli využívání rámů by to šlo jen obtížně).

Jiné chování je vidět i u externích odkazů, které phpMyAdmin odkazuje přímo (po patřičné konfiguraci) a tím jim přes hlavičku Referer předává URL, na kterém správce databáze běží. Adminer externí odkazy směruje přes speciální stránku, která hlavičku Referer skryje.

Výkonnost

Adminer je při práci díky jednodušší architektuře o něco rychlejší než phpMyAdmin. Podle testu Juraje Hajdúcha je to průměrně o 28 %.

Kromě toho Adminer velmi obezřetně pracuje s dlouhotrvajícími operacemi. Jednak před provedením delší operace explicitně posílá dosavadní výstup do prohlížeče, čímž uživateli dovolí pracovat s dosud poslanými daty. Zásadním rozdílem je ale to, že Adminer před provedením dlouhotrvající operace odemkne session, čímž uživateli dovolí s aplikací pracovat v jiném panelu prohlížeče. phpMyAdmin je během dlouhé databázové operace jednoduše zablokován.

Důraz na rychlost práce je u Admineru vidět také v přehledu všech databází. phpMyAdmin v něm zobrazuje počet tabulek v jednotlivých databázích, získání této informace ale může trvat až desítky vteřin. Adminer proto tuto informaci raději zobrazuje až u jednotlivých databází.

Závěr

Přestože je phpMyAdmin zavedený standard pro správu databáze MySQL z webového prohlížeče, řadu funkcí kupodivu nenabízí nebo je nutné je zvlášť konfigurovat. Kromě toho má překvapivé mezery v použitelnosti, často prováděné operace nejsou intuitivní nebo k nim vede zdlouhavá cesta. Padesátkrát menší Adminer nabízí v mnoha oblastech použitelnější uživatelské rozhraní a na řadě míst také více funkcí.

Redakční poznámka: Redakce si je vědoma toho, že text, ačkoli fakticky přesný, lze vnímat jako jednostranně zaměřený. Na druhou stranu je přesvědčena, že článek nabízí zajímavé představení původního českého nástroje a poukazuje na obecněji platné principy tvorby webových aplikací, a proto jej takto vydala.

Autor pracuje jako Software Engineer v týmu Gmail Security. V minulosti se zabýval především PHP, o kterém napsal knihu a podílel se na oficiální dokumentaci. Je autorem nástroje pro správu databáze Adminer. Poznámky si zapisuje na weblog PHP triky.

Komentáře: 125

Přehled komentářů

someone Re: phpMyAdmin VS Adminer
blizzboz Re: phpMyAdmin VS Adminer
Thimble Adminer
Lukáš není to tak černobílé!
Roman Sklenář Re: není to tak černobílé!
Lukáš Re: není to tak černobílé!
Jan Tichý Re: není to tak černobílé!
David Grudl Re: není to tak černobílé!
Ladis Re: není to tak černobílé!
Jens.cz Re: není to tak černobílé!
Borek Bernard Re: není to tak černobílé!
Jan Kodera Re: není to tak černobílé!
Jakub Vrána Re: není to tak černobílé!
Jan Kodera Re: není to tak černobílé!
nijel Re: není to tak černobílé!
David Grudl Re: není to tak černobílé!
Smokie Re: není to tak černobílé!
David Grudl Re: není to tak černobílé!
Smokie Re: není to tak černobílé!
Jakub Vrána Re: není to tak černobílé!
paranoiq Re: není to tak černobílé!
Rbas Re: phpMyAdmin VS Adminer
Pitrsonek Re: phpMyAdmin VS Adminer
David Grudl Adminer vs. phpMyAdmin
Lukáš Re: Adminer vs. phpMyAdmin
David Grudl Re: Adminer vs. phpMyAdmin
Lukáš Re: Adminer vs. phpMyAdmin
David Grudl Re: Adminer vs. phpMyAdmin
alancox Re: Adminer vs. phpMyAdmin
Jirda Re: Adminer vs. phpMyAdmin
Jakub Vrána Re: Adminer vs. phpMyAdmin
nijel Re: Adminer vs. phpMyAdmin
Kruxik Re: Adminer vs. phpMyAdmin
Lup Re: Adminer vs. phpMyAdmin
Rbas Re: Adminer vs. phpMyAdmin
alancox Re: Adminer vs. phpMyAdmin
David Grudl Re: Adminer vs. phpMyAdmin
Miroslav Re: Adminer vs. phpMyAdmin
Miroslav Re: Adminer vs. phpMyAdmin
Tomáš Re: Adminer vs. phpMyAdmin
Jakub Vrána Re: Adminer vs. phpMyAdmin
bedna Re: phpMyAdmin VS Adminer
František Kučera Re: phpMyAdmin VS Adminer
bedna Re: phpMyAdmin VS Adminer
Langi Re: phpMyAdmin VS Adminer
Lukáš Re: phpMyAdmin VS Adminer
Langi Re: phpMyAdmin VS Adminer
Jens.cz Re: phpMyAdmin VS Adminer
František Kučera David
Jens.cz Re: David
Martin Malý Re: phpMyAdmin VS Adminer
alancox Re: phpMyAdmin VS Adminer
Borek Bernard Re: phpMyAdmin VS Adminer
alancox Re: phpMyAdmin VS Adminer
Langi Re: phpMyAdmin VS Adminer
alancox Re: phpMyAdmin VS Adminer
František Kučera Java
David Grudl Re: Java
Martin Malý Re: phpMyAdmin VS Adminer
Ondra Re: phpMyAdmin VS Adminer
Já Tom Re: phpMyAdmin VS Adminer
jtousek Adminer a Postgres
Jakub Vrána Re: Adminer a Postgres
Ped Re: Adminer a Postgres
fos4 Adminer
Marek Plánujete pridať našeptávač?
Jakub Vrána Re: Plánujete pridať našeptávač?
gawan Re: Plánujete pridať našeptávač?
Ondra Re: Plánujete pridať našeptávač?
Jan Kodera replikace
Jakub Vrána Re: replikace
honzamac Spokojenost, co bych vylepšil.
František Kučera Re: Spokojenost, co bych vylepšil.
honzamac Re: Spokojenost, co bych vylepšil.
Jakub Vrána Re: Spokojenost, co bych vylepšil.
honzamac Re: Spokojenost, co bych vylepšil.
Jakub Vrána Re: Spokojenost, co bych vylepšil.
honzamac Re: Spokojenost, co bych vylepšil.
iljusin Re: Spokojenost, co bych vylepšil.
celoush užitečná věc
paranoiq vyzkoušejte Adminer
alancox Re: vyzkoušejte Adminer
paranoiq Re: vyzkoušejte Adminer
paranoiq Re: vyzkoušejte Adminer
Jakub Vrána Re: vyzkoušejte Adminer
Odin Re: vyzkoušejte Adminer
nijel Re: vyzkoušejte Adminer
nesro adminer
dayvee Re: phpMyAdmin VS Adminer
code Re: phpMyAdmin VS Adminer
Tomáš Fejfar Konfigurace
Jakub Vrána Re: Konfigurace
Tomáš Fejfar Re: Konfigurace
francesco3 přidávám se k ☺☼
marek.sudak Re: phpMyAdmin VS Adminer
Vrtak-CZ Adminer + IIS7.5 + PHP5.3.1-NTS-VC9
Vrtak-CZ Re: Adminer + IIS7.5 + PHP5.3.1-NTS-VC9
Anonymous Re: Adminer + IIS7.5 + PHP5.3.1-NTS-VC9
Peacher Re: Adminer + IIS7.5 + PHP5.3.1-NTS-VC9
Jakub Vrána Re: Adminer + IIS7.5 + PHP5.3.1-NTS-VC9
nijel Pár komentářů
Ondra Re: Pár komentářů
nijel Re: Pár komentářů
Jakub Vrána Re: Pár komentářů
nijel Re: Pár komentářů
Jakub Vrána Re: Pár komentářů
nijel Re: Pár komentářů
oernii Este by to chcelo ajaxovy inline editovanie rez refreshu....
jasir Adminer je fajn
Kruxik Velikost databází
Peacher Re: Velikost databází
Prdlořeznictví Krkovička, n.p. Goliáš VS David
Jakub Vrána Re: Goliáš VS David
Cosmo Preco tolko kriku...
David Grudl Re: Preco tolko kriku...
Cosmo Re: Preco tolko kriku...
Jakub Vrána Re: Preco tolko kriku...
Cosmo Orace for adminer
Jakub Vrána Re: Orace for adminer
Cosmo Re: Orace for adminer
David Grudl Re: Orace for adminer
Cosmo Re: Orace for adminer
Já Tom Vzhled
Jakub Vrána Re: Vzhled
zedna Subjektivní článek, přesto vyzkouším
Zdroj: http://www.zdrojak.cz/?p=3154