Navigace

Hlavnφ menu

 

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 vÜech vlastnostφ phpMyAdmin (nßvod je upraven podle verze 2.6-pl2). 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 84 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. JeÜt∞ ne₧ se pokusφte p°ipojit k databßzi, musφte si zvolit, zda k tomu pou₧ijete starΘ nebo novΘ rozhranφ. Pokud pracujete s PHP5, doporuΦuji vßm pou₧φvat v₧dy nov∞jÜφ verzi rozhranφ, krom∞ jinΘho se tak vyhnete takΘ problΘm∙m s nov∞jÜφmi verzemi databßze MySQL. Chcete-li, na °ßdku 73 najd∞te prom∞nnou $cfg['Servers'][$i]['extension'] a zm∞≥te jejφ hodnotu na "mysqli".
  6. 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);
    M∙₧ete takΘ nechat tuto prom∞nnou prßzdnou. Je mo₧nΘ, ₧e phpMyAdmin automaticky absolutnφ URI detekuje a doplnφ. Pokud se tak stane, doporuΦuji vßm vyhledat prom∞nnou $cfg['PmaAbsoluteUri_DisableWarning'] a nastavit jejφ hodnotu na "TRUE", aby vßs program neobt∞₧oval nesmysln²mi chybov²mi hlßÜkami. V dalÜφm textu ale budu p°edpoklßdat, ₧e jste pou₧ili v²Üe uvedenou PHP funkci.
  7. Standardnφm zp∙sobem p°ekopφrujte obsah adresß°e phpmyadmin do cφlovΘho adresß°e na serveru.
  8. 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. Do novΘho okna si otev°ete formulß°, na n∞j₧ vede odkaz pod ikonkou s nßpisem "SQL" v levΘ hornφ Φßsti obrazovky. Do textovΘho pole 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 obΦas 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 95 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φ!
    Pozn. aut.: Pokud se vßm pomocnß databßze nevytvo°φ, zkuste alternativnφ postup. Z rozbalovacφho menu v levΘm rßmu si vyberte databßzi "test" (nebo libovolnou jinou, ke kterΘ mßte p°φstup) a v pravΘm rßmu nßsledovn∞ klepn∞te na odkaz "SQL". Teprve do tohoto formulß°e zadejte v²Üe uveden² p°φkaz. Nßsledujφcφ p°φkazy pak m∙₧ete zadßvat do stejnΘho okna p°φmo v databßzi "pma_db". Pravd∞podobn∞ jde o n∞jakou menÜφ chybu v aktußlnφ verzi phpMyAdmin, jejφm₧ p°φznakem je mimo jinΘ otevφrßnφ SQL okna do ÜpatnΘho rßmu.
  9. V dalÜφm kroku vytvo°φme v pomocnΘ databßzi tabulku bookmark∙ (ulo₧en²ch dotaz∙):
    CREATE TABLE `pma_bookmark` (
        `id` int(11) NOT NULL auto_increment,
        `dbase` varchar(255) NOT NULL default '',
        `user` varchar(255) NOT NULL default '',
        `label` varchar(255) NOT NULL default '',
        `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';.
  10. 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';.
  11. 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';.
  12. 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 dv∞ dalÜφ pomocnΘ tabulky. Prvnφ pomocnß tabulka obsahuje koordinßty jednotliv²ch tabulek pro export do PDF schΘmat:
    CREATE TABLE `pma_table_coords` (
        `db_name` varchar(64) NOT NULL default '',
        `table_name` varchar(64) NOT NULL default '',
        `pdf_page_number` int(11) NOT NULL default '0',
        `x` float unsigned NOT NULL default '0',
        `y` float unsigned NOT NULL default '0',
        PRIMARY KEY (`db_name`,`table_name`,`pdf_page_number`)
    ) TYPE=MyISAM COMMENT='Table coordinates for phpMyAdmin PDF output';
    Druhß slou₧φ k uchovßvßnφ konfiguraΦnφch parametr∙ PDF strßnek:
    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` (`db_name`)
    ) TYPE=MyISAM COMMENT='PDF relation pages for phpMyAdmin';
    TakΘ tyto tabulky je nutno aktivovat pat°iΦnou ·pravou konfiguraΦnφho skriptu: $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages'; a $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';.
  13. Velmi u₧iteΦnou informacφ je popisek sloupce tabulky, zvlßÜt∞ u rozsßhlejÜφch projekt∙, kterΘ nedokß₧eme "udr₧et v hlav∞" nebo na kter²ch spolupracujeme ve v∞tÜφm t²mu. 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, ne-li na vφcero.
  14. 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(20) unsigned NOT NULL auto_increment,
        `username` varchar(64) NOT NULL default '',
        `db` varchar(64) NOT NULL default '',
        `table` varchar(64) NOT NULL default '',
        `timevalue` timestamp(14) NOT NULL,
        `sqlquery` text NOT NULL,
        PRIMARY KEY (`id`),
        KEY `username` (`username`,`db`,`table`,`timevalue`)
    ) TYPE=MyISAM COMMENT='SQL history for phpMyAdmin';
    Poslednφ pomocnß tabulka se aktivuje pomocφ $cfg['Servers'][$i]['history'] = 'pma_history';.
  15. 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Θ).
  16. 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 Φty°i za sebou nßsledujφcφ p°φkazy SQL, je vÜak mo₧no je zadat najednou, phpMyAdmin je interpretuje sprßvn∞. Pracujete-li s MySQL 4.0.2 nebo starÜφ, pou₧ijte nßsledujφcφ:
    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 ON mysql.host TO 'pma'@'localhost';
    GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv)
        ON mysql.tables_priv TO 'pma'@'localhost';
    Pracujete-li s nov∞jÜφ verzφ MySQL, musφte pou₧φt pon∞kud obsßhlejÜφ p°φkaz:
    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,
        Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv,
        Execute_priv, Repl_slave_priv, Repl_client_priv
        ) ON mysql.user TO 'pma'@'localhost';
    GRANT SELECT ON mysql.db TO 'pma'@'localhost';
    GRANT SELECT ON mysql.host TO 'pma'@'localhost';
    GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv)
        ON mysql.tables_priv TO 'pma'@'localhost';
  17. 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';
  18. 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';.
  19. 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 funkcφ phpMyAdmin:
    $cfg['Servers'][$i]['controluser'] = 'pma';
    $cfg['Servers'][$i]['controlpass'] = 'pmapass';
    $cfg['Servers'][$i]['auth_type'] = 'cookie';
    $cfg['Servers'][$i]['user'] = '';
    $cfg['Servers'][$i]['password'] = '';
  20. 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.

ProblΘmy s nov∞jÜφmi verzemi MySQL

MySQL se pom∞rn∞ bou°liv∞ vyvφjφ, co₧ sebou nese °adu problΘm∙. Pou₧itφ phpMyAdmin se t²kß p°edevÜφm novß schopnost MySQL nativn∞ podporovat r∙znΘ znakovΘ sady a jazykovß prost°edφ. Chcete-li t∞₧it z t∞chto zajφmav²ch vlastnostφ, doporuΦuji vßm pou₧φvat v₧dy nejnov∞jÜφ verzi MySQL 4.1.x (momentßln∞ 4.1.6-gamma) a spouÜt∞t ji s parametry --default-character-set=utf8 a --default-collation=utf8_general_ci. Tφm se zßrove≥ vyhnete mnoha pozd∞jÜφm komplikacφm.

Po spuÜt∞nφ phpMyAdmin si jako jazyk u₧ivatelskΘho rozhranφ zvolte "Czech (cs-utf-8)". V pravΘ Φßsti pracovnφho rßmu byste m∞li vid∞t nßsledujφcφ konfiguraΦnφ informace:

phpMyAdmin - konfigurace jazykovΘho prost°edφ

P°i zachovßnφ v²Üe zmφn∞n²ch podmφnek m∙₧ete bez obav pou₧φvat SQL p°φkazy, kterΘ nemusφ obsahovat informace o znakovΘ sad∞ a kolaci, ani₧ by dochßzelo k chybßm p°i jejich provßd∞nφ. (To mimo jinΘ znamenß, ₧e m∙₧ete pou₧φt p°φkazy z tohoto Φlßnku pro libovolnou verzi MySQL a nemusφte pou₧φvat specißlnφ typ p°φkaz∙ pro MySQL 4.1.2 a vyÜÜφ, jak tvrdφ auto°i phpMyAdmin.) Pomocnß databßze "pma_db" i °φdφcφ databßze "mysql" budou pou₧φvat "utf8_general_ci", zatφmco pro svΘ databßze m∙₧ete pou₧φt "utf8_czech_ci", dφky Φemu₧ se vßm nap°φklad zßznamy, vybranΘ z textov²ch polφ, sprßvn∞ se°adφ podle ΦeskΘ abecedy.

Pozn. red.: Tento Φlßnek vyÜel poprvΘ 17. 9. 2003. P∙vodnφ verze Φlßnku a k n∞mu vedenΘ diskuse jsou vßm k dispozici v ZIP archivech.

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∙ ji₧ byla uzav°ena, aΦkoli dalÜφ pokraΦovßnφ nelze vylouΦit.

Mßlek, VilΘm (16. 10. 2004)
ÜΘfredaktor Interval.cz