LPS:MySQL
MySQL databáze
Hostování MySQL databází je služba určená pro webové projekty a webové aplikace, od srpna 2005 není dostupná pro domácí stránky uživatelů. O zřízení služby je potřeba požádat pomocí online formuláře.
Správa databáze přes webové rozhraní
Aplikace PhpMyAdmin pro správu databáze je přístupná pro všechy provozované weby přes jednoduché přesměrování "/phpmyadmin". Například, jste-li správcem webového projektu www.mojekatedra.zcu.cz, dostanete se ke správě databáze přes centrální aplikaci PhpMyAdmin na adrese
http://www.mojekatedra.zcu.cz/phpmyadmin
Základní nastavení
Vzhledem k faktu, že přístupové heslo k databázi je v PHP skriptech uložené v otevřené formě, doporučujeme z důvodů zabezpečení v adresářích, kde jsou skripty uložené, nastavit práva následujícím způsobem:
fs sa . www-hosts.zcu rl fs sa . zcu.cz none
První z příkazů povolí čtení vašeho adresáře pro přístup WWW prohlížeče, druhý z příkazů zakáže číst adresář všem uživatelům ze ZČU. Tímto způsobem výrazně snížíte riziko, že někdo neoprávněně získá přístup k vašim datům uloženým v databázi.
Do přidělené databáze lze přistupovat pouze ze skriptovacího jazyka PHP (tj. vytváření tabulek, vkládání dat, editace, nalezení údajů a následné vypsání). Práci s MySQL databází na serveru home.zcu.cz si ukážeme na velmi zjednodušeném ilustrativním příkladu. Předpokládejme, že uživatel zajicek si chce vytvořit jednoduchý telefonní seznam (jméno, příjmení, telefonní číslo) a vyplnil výše uvedený formulář. Na základě údajů z tohoto formuláře mu byla vytvořena databáze (například) s následujícími parametry:
Host: localhost login: civ password: MojE/DatA DB name: web_civ_adresar
Vytvoření tabulek v databázi
Vytvoření tabulek v databázi - script vytvor.php:
<? # připojení k databázi mysql_connect('localhost', 'civ', 'MojE/DatA'); mysql_select_db('web_civ_adresar'); # vytvoření tabulky databáze mysql_query("CREATE TABLE adresar (id int not null auto_increment" . "primary key, jmeno varchar(20), prijmeni varchar(30), " . "tel varchar(20))"); # výpis struktury vytvořené tabulky mysql_query("DESC adresar"); # ukončení práce s databází mysql_close(); ?>
Spuštěním tohoto skriptu docílí uživatel vytvoření tabulky v MySQL databázi.
Vložení údajů do databáze
Vložení údajů (zde rozděleno na 2 soubory - 1. formulář k načtení vkládaných dat, 2. samotné vložení dat do databáze):
vloz_form.html:
<FORM ACTION="vloz.php" METHOD="post"> Jméno: <INPUT TYPE="text" NAME="jmeno"><BR> Příjemní: <INPUT TYPE="text" NAME="prijmeni"><BR> Telefonní číslo: <INPUT TYPE="text" NAME="tel"><BR> <INPUT TYPE="submit" VALUE="Odeslat"> </FORM>
Tento soubor zobrazí formulář, kde po vyplnění dat a stisknutí tlačítka Odeslat dojde k předání těchto dat PHP skriptu 'vloz.php'. Povšimněte si prosím, že na hodnotu formulářových prvků se v PHP skriptu odkazuje znakem '$' bezprostředně následovaným jménem definovaným ve formuláři (např. $jmeno).
vloz.php:
<? # připojení k databázi mysql_connect('localhost', 'civ', 'MojE/DatA'); mysql_select_db('web_civ_adresar'); # vložení údajů zaslaných formulářem mysql_query(sprintf("INSERT INTO adresar VALUES (0, '%s', '%s', '%s')", $jmeno, $prijmeni, $tel)); printf("Data byla uložena!<BR>"); printf("<A HREF=\"vloz_form.html\">Další</A>"); # ukončení práce s databází mysql_close(); ?>
Nalezení a vypsání údajů z databáze
Nalezení a vypsání údajů z databáze lze v našem jednoduchém příkladě opět rozdělit na dva soubory. První soubor - formulář - má za úkol načíst příjmení osoby, které budeme hledat v telefonním seznamu.
hledej_form.html:
<FORM ACTION="hledej.php" METHOD="post"> Hledané příjmení: <INPUT TYPE="text" NAME="hled_prijm"><BR> <INPUT TYPE="submit" VALUE="Odeslat"> </FORM>
Druhý soubor - PHP skript 'hledej.php' - porovná vyplněný údaj se záznamy v databázi a v případě nalezení záznamů, které vyhledávací kritérium splňují, vypíše je na obrazovku.
hledej.php:
<? # připojení k databázi mysql_connect('localhost', 'zajicek', 'MojE/DatA'); mysql_select_db('user_zajicek_adresar'); # vyhledání záznamů splňujících vyhledávací kritéria $query = mysql_query(sprintf("SELECT jmeno, prijmeni, tel FROM " . "adresar WHERE prijmeni LIKE '%s%%'", $hled_prijm)); if (mysql_num_rows($query) == 0) { printf("Žádné záznamy nesplňují vyhledávací kritéria!"); } else { while (list($jmeno, $prijmeni, $tel) = mysql_fetch_row($query)) printf("%s %s (<B>%s</B>)<BR>\n", $prijmeni, $jmeno, $tel); } printf("<A HREF=\"hledej_form.html\">Hledej znovu</A>"); # ukončení práce s databází mysql_close(); ?>
Různé
Změna uživatelského hesla
Uživatelské heslo do MySQL databáze je možné po přihlášení do databázového systému (tj. prostřednictvím PHP skriptu) změnit pomocí SQL příkazu:
SET PASSWORD = PASSWORD('vase_nove_heslo');
Zálohování
MySQL databáze jsou pravidelně zálohovány jednou za den na AFS projekt (rotuje se posledních 7 dní), který je pak zálohován centrálně jednou za týden na pásky. Zpětná dostupnost dat na páskách je pak garantována po dobu jednoho měsíce.