Článek vyšel na serveru Zdroják.
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ý.
phpMyAdmin 3.2.4 lze stáhnout ve dvou verzích:
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.
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.
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í.
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.
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.
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.
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.
U 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 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.
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í.
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í.
Diskuse je zrušena z důvodu spamu.