Michal Čihař - Nastavení přístupu k MySQL serverům

Nastavení přístupu k MySQL serverům

phpMyAdmin není omezen jen na použití s jediným MySQL serverem. Základní nastavení pro jeden server již bylo popsáno dříve, teď je na čase postoupit k nastavení pro složitější konfigurace a podrobněji popsat možnosti, které phpMyAdmin nabízí.

Typ přihlášení

Základní možnosti přihlašování byly stručně popsány dříve , ale jejich výhody a nevýhody si teď ještě probereme podrobněji. Volba typu přihlášení se do konfiguračního souboru píše následovně:

 
  $cfg['Servers'][$i]['auth_type'] = 'typ';
 

config

Připojení je nadefinované v konfiguračním souboru, omezení přístupu by mělo být zajištěno jiným způsobem. Pokud používáme phpMyAdmina jen na lokálním počítači, může se jednat o nejpohodlnější variantu.

cookie

Přihlašování pomocí koláčků, kdy se uživatel přihlašuje stejným uživatelským jménem a heslem jako do MySQL. Autentizace tedy necháváme na MySQL serveru se všemi výhodami a nevýhodami, které z toho plynou. Pozor například na zpřístupnění všech účtů vzdáleně, tedy i těch, které jsou v MySQL povoleny jen z lokálního počítače.

Heslo se do koláčků ukládá šifrované klíčem uloženém na serveru ( $cfg['blowfish_secret'] ), čímž se poněkud snižuje riziko útoku v případě ukradení koláčku (ale není mu zabráněno úplně, takže dodržovat nějaké bezpečnostní zvyklosti je pořád potřeba).

Jedná se asi o nejpoužívanější volbu a kromě pevně definovaného MySQL serveru umožňuje také uživateli zadat libovolný MySQL server po nastavení:

 
  $cfg['AllowArbitraryServer'] = TRUE;
 

Pozor však pokud phpMyAdmin běží na web serveru za firewallem, v tomto případě může uživatel získat při povolení zadání libovolného serveru i přístup k interním MySQL serverům, ke kterým by jinak přístup neměl.

http

HTTP přihlašování je dost podobné přihlašování pomoci koláčků, platí pro ni téměř to samé. Jen není možné provést plnohodnotné odhlášení (HTTP autentizace toto neumožňuje) a heslo na straně klienta není ukládáno šifrovaně.

signon

Tato metoda je určena pro integraci phpMyAdmina do jiných systémů, kdy se uživatel přihlašuje heslem do jiného systému a ten phpMyAdminovi při vstupu do něj předá přístupové údaje do MySQL. Podrobněji se implementaci tohoto typu budu věnovat v některém s dalších článků, takže vás zatím jen odkážu na anglický popis na wiki .

Parametry připojení

Většina parametrů připojení asi není potřeba moc popisovat a jejich názvy celkem vypovídají co asi daná volba dělá:

 
  $cfg['Servers'][$i]['host'] = 'mysql.example.net';
$cfg['Servers'][$i]['port'] = '4242';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['ssl'] = false;
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['extension'] = 'mysql';
 

V případě, že MySQL provozujete na standardním portu (nebo soketu v případě lokálního počítače), jediné co opravdu potřebujete nastavit je $cfg['Servers'][$i]['host'] . V případě novějšího PHP je také vhodné nastavit používané rozšíření PHP na mysqli :

 
  $cfg['Servers'][$i]['extension'] = 'mysqli';
 

Více serverů

Více serverů není pro phpMyAdmina žádným problémem. Jistě jste si všimli $i zadávaného ve všech konfiguračních parametrech. Touto proměnou je možné nadefinovat libovolné množství serverů, ze kterých si uživatel bude moci vybra. Proměnná se používá místo přímého udání čísla pro snadnější případný přesun serverů nebo kopírování parametrů. Konfigurace pro více serverů pak v podstatě jen spočívá v kopírování a upravování parametrů pro jednotlivé servery. Například tedy může vypadat takto:

 
  /* Servers configuration */
$i = 0;

/* Server localhost (config:root) [1] */
$i++;
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'mysql';

/* Server localhost (config:franta) [2] */
$i++;
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'franta';
$cfg['Servers'][$i]['password'] = 'heslo';
 

Ve výchozím nastavení se phpMyAdmin automaticky pokusí připojit k prvnímu serveru. Pokud chceme, aby se připojoval k jinému, zadáme jeho pořadové číslo do proměnné $cfg['ServerDefault'] , pokud chceme aby si uživatel nejdříve vybral server, zadáme nulu:

 
  $cfg['ServerDefault'] = 0;