Tag Archives: MySQL

CVE-2012-2122: Chyba MySQL, která by vás měla zajímat

Zásadní chybu (včetně opravy) týkající se MySQL a MariaDB serverů v sobotu na oss-sec maillistu ohlásil Sergei Golubchik. Zpozornět by tedy měli všichni, kdo mají nějaký takový server pod svojí správou.
Continue reading

MySQL: unauthenticated user

Nedávno jsem narazil na zajímavý problém: MySQL na jednom nepříliš vytíženém serveru začalo vracet chybu Too many connections, i když z počet spojení běžně stačí s rezervou. Po chvilce pátrání jsme s programátorem zjistili, že jednou za čas se tam objeví spousta připojení ze vzdáleného (legitimního) serveru označená jako "unauthenticated user". Výpis MySQL procesů byl pak plný takovýchto řádek:

| 263718676 | unauthenticated user | 10.0.0.2:51896 | NULL    | Connect     |   NULL | login  | NULL |

Po chvilce pátrání jsem zjistil, že nejde o útok - ani nevíte jaká je to po pár zkušenostech úleva. Chyba byla ve špatné komunikaci s DNS servery, které dostatečně rychle neodpovídaly.

MySQL se DNS serverů dotazuje téměř při každém uživatelském loginu (používá sice nějakou vnitřní cache, ale asi to není žádná bomba). Využívají se k tomu funkce gethostbyaddr(), pomocí které se zeptá, jaký záznam na této IP vězí. Potom nasadí gethostbyname() a porovná vrácenou IP adresu s původní (více rozepsané je to v dokumentaci). Jednoduché a účinné do okamžku, kdy se zhorší komunikace právě s DNS servery. Nabízejí se dvě možnosti, jak to vyřešit:

  • Použijte přepínač --skip-name-resolve. Hodí se hlavně v případě, že dopředu nevíte, odkud se k serveru klienti připojují. S použitím ale musíte upravit všechny záznamy pro povolené uživatele, tak aby ve sloupci Host byly jen IP adresy nebo 'localhost'.
  • Zapište záznamy s klienty do /etc/hosts souboru. Funkce gethostbyaddr() i gethostbyname() se nejdříve podívají právě do tohoto souboru než aby se dotazovaly jiných serverů. Tato možnost se hodí, pokud máte pár jen statických klientů.

Třeba to někomu pomůže..

MySQL: přidání uživatele a databáze (a pár poznámek)

Další článek z velmi nepravidelné série "Základy administrátora" se zaměřuje na tu úplně nejprvotnější práci s MySQL - vytvoření databáze a uživatele. Samozřejmě z řádky, pokud máš phpMyAdmin, můžeš si to ručně naklikat..

Může Ti to připadat jako hloupost, ale věř, že dnes už existuje tolik služeb, které vyžadují MySQL, že se tyto základní jednoduché příkazy hodí znát "jako svoje boty". Už jen proto, že naklikání z nějakého webového/grafického rozhraní jednoduše zdržuje.
Continue reading

CentOS 5, Django a MySQL

V poslední době si pohrávám s pythoním webovým frameworkem Django a jal jsem se ho zkoušet na svém serveru s OS CentOS 5.5. Protože jsem od přírody lenoch, nechtělo se mi experimentovat s jinými databázemi než na serveru mám - skončil jsem u MySQL. Uznávám, ještě by šlo použít sqlite, ale já jsem přeci jen s tím MySQL nějak víc kamarád.

django logoPročetl jsem pár blogpostů a příspěvků o tom, že pod CentOSem je problém podporu MySQL pro python (MySQLdb) rozjet, protože balík z repozitářů (MySQL-python), který to má obstarávat je satršího data (v repozitářích je aktuálně verze 1.2.1-1) a že nejlepší je kompilace aktuálního balíku. Nene, jeden balík je tu ... schovaný.

Continue reading

Přesun MySQL na nový server

Nedávno jsem se setkal s dotazem, jak přesunout celý MySQL server na nový fyzický stroj a přistupovat na něj odjinud (např. pomocí phpMyAdmin). Z poznámek jsem sepsal krok za krokem "jak na to" pěkně od začátku. A nebojte, není to nic složitýho... Ale pozor, jakmile se něco pokazí, můžete přijít o všechna data...

Continue reading