Navigace

Hlavní menu

 

Submenu

 

Instalace phpMyAdmin

Jeden z nejlepších, pokud ne nejlepší, nástroj pro správu databáze je podle mého názoru phpMyAdmin. Od časů jednoduchého skriptu už ovšem ušel dlouhou cestu. Zatímco dříve stačilo nahrát několik souborů kamkoli na server a do konfigurace zadat heslo a jméno, nyní je již zapotřebí mnohem více, alespoň pokud chcete využít všech možností, které nový phpMyAdmin poskytuje.

Článek o instalaci phpMyAdmin už na Intervalu jednou vyšel a rozhodně neprohloupíte, pokud si ho přečtete, byť je již staršího data. V následujícím textu se omezím pouze na velmi stručný popis instalace a konfigurace tak, abyste mohli využívat nových vlastností phpMyAdmin (návod je upraven podle verze 2.5.3). Můžete si tento článek třeba vytisknout a jednotlivé body si po provedení zaškrtávat.

  1. Stáhněte si instalační archiv phpMyAdmin z phpmyadmin.sourceforge.net.
  2. Stažený archiv rozbalte do libovolného místa na disku
  3. Adresář, který po rozbalení vznikl, přejmenujte na phpmyadmin.
  4. Ve výše zmíněném adresáři vyhledejte soubor config.inc.php. Předpokládám, že phpMyAdmin bude umístěn na stejném serveru, na kterém běží i MySQL, a že máte práva administrátora databáze. Vyhledejte tedy na řádku 80 proměnnou $cfg['Servers'][$i]['user'] a zadejte své uživatelské jméno pro přístup k MySQL. V následujícím řádku pak musíte do $cfg['Servers'][$i]['password'] zadat odpovídající heslo.
  5. Na řádku 39 najdete proměnnou, kterou je nutno nastavit tak, aby obsahovala absolutní cestu ke kořenové složce phpMyAdmin, jinak nebude fungovat. Tuto hodnotu můžete zadat ručně, nebo ji naplnit dynamicky podle různých návodů v dokumentaci nebo na fórech. Mně se osvědčil následující zápis:
    $cfg['PmaAbsoluteUri'] = (!empty($_SERVER['HTTPS']) ? 'https' : 'http') . '://'
        . $_SERVER['HTTP_HOST']
        . (!empty($_SERVER['SERVER_PORT']) ? ':' . $_SERVER['SERVER_PORT'] : '')
        . substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/')+1);
  6. Standardním způsobem překopírujte obsah adresáře phpmyadmin do cílového adresáře na serveru.
  7. Nyní si v prohlížeči otevřete URL, na které jste phpMyAdmin umístili. Abyste mohli využít jeho zvláštních schopností, které z části suplují chybějící funkcionalitu MySQL a z části ji rozšiřují, musíte zřídit pomocnou databázi, kam si phpMyAdmin bude ukládat provozní informace. Klepněte na odkaz SQL okno v levém dolním rohu obrazovky a zadejte následující příkaz:
    CREATE DATABASE pma_db
    Nová pomocná databáze se bude jmenovat pma_db. Samozřejmě můžete použít jiný název, pak ale musíte upravit následující SQL příkazy. Také vám doporučuji vyhnout se používání velkých písmen, ačkoli ve vlastní dokumentaci i v komentářích konfiguračního souboru se používají. Uchráníte se tak nečekaným problémům, především při migraci z Windows na Linux.
    To však nestačí, musíme ještě phpMyAdmin informovat o tom, kde pomocnou databázi najde a donutit ho používat ji. V souboru config.inc.php doplníme do proměnné na řádku 90 její jméno, tedy $cfg['Servers'][$i]['pmadb'] = 'pma_db';. Úpravu provádějte v off-line kopii, novou verzi konfiguračního souboru nahrajeme na server teprve po dokončení všech operací.
  8. V dalším kroku vytvoříme v pomocné databázi tabulku bookmarků (uložených dotazů):
    CREATE TABLE `pma_bookmark` (
        id int(11) DEFAULT '0' NOT NULL auto_increment,
        dbase varchar(255) NOT NULL,
        user varchar(255) NOT NULL,
        label varchar(255) NOT NULL,
        query text NOT NULL,
        PRIMARY KEY (id)
    ) TYPE=MyISAM COMMENT='Bookmarks';
    Do konfiguračního souboru pak doplníme její název $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';.
  9. Jednou z užitečných vlastností relačních databází je udržování přehledu o vzájemných vztazích dat - relacích. Problém řeší phpMyAdmin prostřednictvím pomocné tabulky relací:
    CREATE TABLE `pma_relation` (
        `master_db` varchar(64) NOT NULL default '',
        `master_table` varchar(64) NOT NULL default '',
        `master_field` varchar(64) NOT NULL default '',
        `foreign_db` varchar(64) NOT NULL default '',
        `foreign_table` varchar(64) NOT NULL default '',
        `foreign_field` varchar(64) NOT NULL default '',
        PRIMARY KEY (`master_db`, `master_table`, `master_field`),
        KEY foreign_field (foreign_db, foreign_table)
    ) TYPE=MyISAM COMMENT='Relation table';
    Opět je nutno do konfiguračního souboru doplnit název tabulky, takže $cfg['Servers'][$i]['relation'] = 'pma_relation';.
  10. Na řadu přichází tabulka, uchovávající informace (komentáře) k jednotlivým tabulkám ostatních databází:
    CREATE TABLE `pma_table_info` (
        `db_name` varchar(64) NOT NULL default '',
        `table_name` varchar(64) NOT NULL default '',
        `display_field` varchar(64) NOT NULL default '',
        PRIMARY KEY (`db_name`, `table_name`)
    ) TYPE=MyISAM COMMENT='Table information for phpMyAdmin';
    Do konfiguračního souboru doplníme $cfg['Servers'][$i]['table_info'] = 'pma_table_info';.
  11. Nový phpMyAdmin umí také vytvářet PDF stránky, díky čemuž si můžete snadno vyexportovat přehlednou mapu struktury svého DB projektu. Potřebuje k tomu ovšem další pomocnou tabulku pro uchovávání konfiguračních parametrů:
    CREATE TABLE `pma_pdf_pages` (
        `db_name` varchar(64) NOT NULL default '',
        `page_nr` int(10) unsigned NOT NULL auto_increment,
        `page_descr` varchar(50) NOT NULL default '',
        PRIMARY KEY (page_nr),
        KEY (db_name)
    ) TYPE=MyISAM COMMENT='PDF Relationpages for PMA';
    Také tu je nutno aktivovat patřičnou úpravou konfiguračního skriptu: $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';.
  12. Velmi užitečnou informací je popisek sloupce tabulky, zvláště u rozsáhlejších projektů, které nedokážeme "udržet v hlavě". Také zde nabízí phpMyAdmin řešení v podobě pomocné tabulky:
    CREATE TABLE `pma_column_info` (
        id int(5) unsigned NOT NULL auto_increment,
        db_name varchar(64) NOT NULL default '',
        table_name varchar(64) NOT NULL default '',
        column_name varchar(64) NOT NULL default '',
        `comment` varchar(255) NOT NULL default '',
        mimetype varchar(255) NOT NULL default '',
        transformation varchar(255) NOT NULL default '',
        transformation_options varchar(255) NOT NULL default '',
        PRIMARY KEY (id),
        UNIQUE KEY db_name (db_name, table_name, column_name)
    ) TYPE=MyISAM COMMENT='Comments for Columns';
    Tuto tabulku aktivujete pomocí $cfg['Servers'][$i]['column_info'] = 'pma_column_info';. Když už žádná jiná, právě tato se oplatí, neboť obsahuje informace o MIME typu dat a příkazy k jejich transformaci. Kouzla, která díky této tabulce phpMyAdmin dokáže, vydají nejméně na samostatný článek!
  13. Určitě se vám bude hodit, když si phpMyAdmin zapamatuje několik naposledy použitých SQL dotazů, opět prostřednictvím pomocné tabulky:
    CREATE TABLE `pma_history` (
        `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
        `username` VARCHAR( 64 ) NOT NULL ,
        `db` VARCHAR( 64 ) NOT NULL ,
        `table` VARCHAR( 64 ) NOT NULL ,
        `timevalue` TIMESTAMP NOT NULL ,
        `sqlquery` TEXT NOT NULL ,
        PRIMARY KEY ( `id` ) ,
        INDEX ( `username` , `db` , `table` , `timevalue` )
    ) TYPE=MyISAM COMMENT='SQL history';
    Poslední pomocná tabulka se aktivuje pomocí $cfg['Servers'][$i]['history'] = 'pma_history';.
  14. Aby mohl phpMyAdmin začít kouzlit, musíme pro něj v MySQL vytvořit speciálního uživatele:
    GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass';
    Jak vidíte, v řídící databázi "mysql" se vytvoří nový uživatel "pma", který má povoleno k databázi přistupovat pouze ze společného serveru a je identifikován heslem "pmapass" (doporučuji nahradit vlastním, ačkoli to není nezbytně nutné).
  15. Uživateli, kterého jsme v předchozím kroku vytvořili, musíme přidělit patřičná práva (pouze ke čtení), aby mohl získávat informace o databázích v systému. Jde vlastně o tři za sebou následující příkazy SQL, je však možno je zadat najednou, phpMyAdmin je interpretuje správně:
    GRANT SELECT (Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv,
        Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv,
        Grant_priv, References_priv, Index_priv, Alter_priv)
        ON mysql.user TO 'pma'@'localhost';
    GRANT SELECT ON mysql.db TO 'pma'@'localhost';
    GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv)
        ON mysql.tables_priv TO 'pma'@'localhost';
  16. Ještě musíme phpMyAdmin udělit právo spravovat svou vlastní pomocnou databázi:
    GRANT SELECT, INSERT, UPDATE, DELETE ON pma_db.* TO 'pma'@'localhost';
  17. Opět se vrátíme k naší off-line verzi config.inc.php. K plné funkčnosti potřebuje phpMyAdmin zapnuté cookies, kterými přenáší některé důležité informace (v ostatních režimech bez cookies nejsou všechny funkce k dispozici). Autoři nyní cookies chrání šifrováním pomocí algoritmu BlowFish. Na řádku 60 neupravovaného souboru (nyní by to mělo být číslo 63) je proměnná, do které je nutno zadat vhodnou šifrovací frázi, rozhodně ne $cfg['blowfish_secret'] = 'blowfish_secret';.
  18. Posledním zásahem do config.inc.php bude změna režimu pro práci s databází, čímž teprve dojde k aktivaci všech tak namáhavě připravených vychytávek:
    $cfg['Servers'][$i]['controluser'] = 'pma';
    $cfg['Servers'][$i]['controlpass'] = 'pmapass';
    $cfg['Servers'][$i]['auth_type'] = 'cookie';
    $cfg['Servers'][$i]['user'] = '';
    $cfg['Servers'][$i]['password'] = '';
  19. Nakonec nesmíme zapomenout nově upravený soubor config.inc.php nahrát na server a přepsat jím dočasnou verzi, kterou jsme použili pro přípravu pomocných tabulek a manipulaci s právy k databázím.

V této chvíli byste měli mít phpMyAdmin nakonfigurován tak, aby plně využíval všech svých předností. Měl by být mnohem bezpečnější než předchozí verze a neměl by mít problémy s ostrým nasazením na produkčních serverech, provozovaných ve víceuživatelském prostředí. Popis využití jednotlivých speciálních vlastností však dalece přesahuje rámec tohoto článku.

Málek, Vilém (17. 9. 2003)
šéfredaktor Interval.cz

Správce pro databáze MySQL - phpMyAdmin

Web-based aplikace phpMyAdmin umožňuje pravděpodobně nejdokonalejší správu databází, založených na MySQL. Nejen, že zpřístupňuje běžné funkce MySQL, ale supluje i část chybějící funkčnosti typické pro relační databáze. Tato série článků dosud nebyla ukončena!

Diskuze: Instalace phpMyAdmin
2003-09-17 02:27:46David GrudlphpMyAdmin je super ale...
2003-09-17 06:51:57SethphpMyAdmin je super ale...
2003-09-17 08:10:34MadagiophpMyAdmin je super ale...
2003-09-17 08:12:11MadagiophpMyAdmin je super ale...
2003-09-17 09:02:55jeeffphpMyAdmin je super ale...
2003-09-17 09:11:31ToshirophpMyAdmin je super ale...
2003-09-17 09:46:03VitaphpMyAdmin je super ale...
2003-09-17 14:14:54RitchiephpMyAdmin je super ale...
2003-09-17 11:01:47DFlyphpMyAdmin je super ale...
2003-09-17 13:12:14LeophpMyAdmin je super ale...
2003-09-17 13:40:29Vilém MálekphpMyAdmin je super ale...
2003-09-18 22:33:33Jméno a příjmeníphpMyAdmin je super ale...
2003-10-01 10:00:55MeXphpMyAdmin je super ale...
2003-09-17 02:31:25David Grudlno a co treba
2003-09-17 02:42:02Vilém Málekno a co treba
2003-12-10 16:38:35retno a co treba
2003-09-17 10:42:33BořekOT dotaz p. Málkovi
2003-09-17 12:11:06Vilém MálekOT dotaz p. Málkovi
2003-09-17 13:42:05BořekOT dotaz p. Málkovi
2003-09-19 11:33:45HonzaPort 80
2003-09-19 14:37:34HonzaPort 80
2003-09-21 19:45:34Ondra VotavaphpMyAdmin na IIS
2003-09-24 12:58:04Svrček MirekphpMyAdmin na IIS
2003-10-01 10:11:27MeXProblem s phpAdminom
2003-10-01 15:22:02Vilém MálekProblem s phpAdminom
2004-02-06 15:58:16patriksifrovani cookies
2004-02-07 18:52:14Vilém Máleksifrovani cookies
2004-02-13 15:19:29BobíkVerze 2.5.6
2004-02-13 15:51:31Vilém MálekVerze 2.5.6
2004-02-22 01:16:29Frantaroot_dotaz
2004-02-22 09:47:35Vilém Málekroot_dotaz
2004-02-22 18:11:12Frantaroot_dotaz
2004-02-22 19:09:56Vilém Málekroot_dotaz
2004-02-22 20:26:02Frantaroot_dotaz
2004-02-22 21:53:40Vilém Málekroot_dotaz
2004-02-23 10:06:14Frantaroot_dotaz
2004-02-23 10:06:21Frantaroot_dotaz
2004-02-24 23:04:38David Tomannejde mi vytvorit uzivatel pma
2004-02-24 23:41:26Vilém Máleknejde mi vytvorit uzivatel pma
2004-02-25 01:26:40David Tomannejde mi vytvorit uzivatel pma
2004-03-10 07:52:31lubophpMyAdmin multiuser
2004-03-10 08:34:01Vilém MálekphpMyAdmin multiuser
2004-03-22 11:27:51radekproblem se stylama
2004-04-19 09:43:53Martinbílé jak list papíru :-(
2004-04-19 09:56:29Martinbílé jak list papíru :-(
2004-05-05 19:31:07XKENNIROOT!
2004-09-26 16:55:39HonzaROOT!
2004-09-26 18:56:56Vilém MálekROOT!
2004-05-07 01:15:41shennyHTTP autentifikace
2004-05-19 20:00:08FILIPCO S TIM!!
2004-05-27 15:28:19Vilém MálekCO S TIM!!
2004-06-09 21:25:25Jiří KrálProsím pomůžete?
2004-06-13 09:12:37Jiří KrálProsím pomůžete?
2004-07-19 12:13:37Tomprsím help - nefunkční authentifikace
2004-07-19 12:45:31Vilém Málekprsím help - nefunkční authentifikace
2004-07-22 19:56:45Mojmír LukešJeště jedna tabulka
2004-07-22 20:06:00Vilém MálekJeště jedna tabulka
2004-09-06 17:48:11Hawkeythanx!!!
2004-09-22 10:29:46Mariannaproblém s vložením textového súboru
2004-09-22 12:06:40Vilém Málekproblém s vložením textového súboru
2004-10-02 20:11:54Kukoozly priklad s PmaAbsoluteUri