LPS:MySQL

Z HelpDesk

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.