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.
- Stßhn∞te si instalaΦnφ archiv phpMyAdmin z phpmyadmin.sourceforge.net.
- Sta₧en² archiv rozbalte do libovolnΘho mφsta na disku
- Adresß°, kter² po rozbalenφ vznikl, p°ejmenujte na phpmyadmin.
- 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.
- 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".
-
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') . '://'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.
. $_SERVER['HTTP_HOST']
. (!empty($_SERVER['SERVER_PORT']) ? ':' . $_SERVER['SERVER_PORT'] : '')
. substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/')+1); - Standardnφm zp∙sobem p°ekopφrujte obsah adresß°e phpmyadmin do cφlovΘho adresß°e na serveru.
-
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_dbNovß 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φ!
-
V dalÜφm kroku vytvo°φme v pomocnΘ databßzi tabulku bookmark∙ (ulo₧en²ch dotaz∙):
CREATE TABLE `pma_bookmark` (Do konfiguraΦnφho souboru pak doplnφme jejφ nßzev $cfg['Servers'][$i]['bookmarktable'] = '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'; -
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` (Op∞t je nutno do konfiguraΦnφho souboru doplnit nßzev tabulky, tak₧e $cfg['Servers'][$i]['relation'] = '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'; -
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` (Do konfiguraΦnφho souboru doplnφme $cfg['Servers'][$i]['table_info'] = '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'; -
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` (Druhß slou₧φ k uchovßvßnφ konfiguraΦnφch parametr∙ PDF strßnek:
`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';CREATE TABLE `pma_pdf_pages` (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';.
`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'; -
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` (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.
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'; -
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` (Poslednφ pomocnß tabulka se aktivuje pomocφ $cfg['Servers'][$i]['history'] = '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'; -
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Θ).
-
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 (Pracujete-li s nov∞jÜφ verzφ MySQL, musφte pou₧φt pon∞kud obsßhlejÜφ p°φkaz:
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';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'; -
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';
- 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';.
-
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'] = ''; - 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:
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.