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.
- 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 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.
-
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); - 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. Klepněte na odkaz SQL okno v levém dolním rohu obrazovky a 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 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í. -
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) 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'; -
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 další pomocnou tabulku pro uchovávání konfiguračních parametrů:
CREATE TABLE `pma_pdf_pages` (Také tu je nutno aktivovat patřičnou úpravou konfiguračního skriptu: $cfg['Servers'][$i]['pdf_pages'] = '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'; -
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` (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!
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 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'; -
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 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'; -
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 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'] = ''; - 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.
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!
- MIME transformace v phpMyAdmin - vestavěné funkce
- Instalace phpMyAdmin (právě čtete)
- PhpMyAdmin - základní funkce
- PhpMyAdmin - spolehlivý správce pro MySQL