Manual:Shared database/cs

Tato stránka poskytuje stručný přehled používání sdílených databází v MediaWiki. Většina informací zde by měla fungovat s jednoduchou instalací MediaWiki (bez rozšíření). Jakékoli požadavky na rozšíření jsou uvedeny. Všimněte si, že toto je navrženo kolem databází MySQL. Podpora pro SQLite byla přidána do MediaWiki 1.17. Podpora pro PostgreSQL byla přidána do MediaWiki 1.19. Jiné databázové stroje nemusí podporovat sdílené databáze tímto způsobem.

Základy
Sdílené databáze jsou nakonfigurovány se 3 hlavními globálními ve vašem :



V závislosti na vašich potřebách a prostředí možná nebudete muset používat všechny tyto možnosti.



Nejjednodušší nastavení: Sdílená uživatelská tabulka
Sdílenou tabulku uživatelů lze použít pro více wikin, které mají sdílené registrace uživatelů, takže uživatelé se musí zaregistrovat pouze do jedné wiki.

Ve výchozím nastavení obsahuje $wgSharedTables tabulky user a user_properties. Přidání 'hráče' je plánováno.



Oprávnění k databázi
Uživatel MySQL sdílené wiki musí mít alespoň oprávnění SELECT a UPDATE pro hlavní tabulky uživatelů wiki. Pokud pro každou wiki používáte různé uživatele MySQL, budete muset uživateli sdílené wiki udělit další oprávnění, jak je uvedeno v nastavení dané wiki. Pro ty, kteří používají sdílený hosting, mějte na paměti, že to je možné u některých, ale ne u všech poskytovatelů. Udělení oprávnění lze provést pomocí příkazů MySQL podobných následujícím:

To vaší wiki umožní číst uživatele z hlavní tabulky a také aktualizovat tabulky, což se stane vždy, když se uživatel přihlásí.



Sdílení relací
Chcete-li sdílet přihlašovací relace mezi svými wikinami, nastavte tak, aby zahrnoval všechny subdomény pod vaší kořenovou doménou. Pokud máte například stránky en.example.comfr.example.compool.example.com, nastavte:

Aktualizace
Od MediaWiki 1.21, když aktualizujete MediaWiki z webového instalačního programu, musí být během aktualizace dočasně odstraněny $wgSharedTables z LocalSettings.php. Jinak se sdílených tabulek vůbec nedotkne (ani tabulek s $wgSharedPrefix, ani těch s $wgDBprefix), což může vést k neúspěšnému upgradu.

Při aktualizaci z příkazového řádku, spouštění skriptu, musíte pro aktualizaci sdílených tabulek použít parametr  pro skript.

V MediaWiki 1.24 se výchozí typ hesla pro MediaWiki změnil z MD5 na PBKDF2 a hodnoty hash hesel se automaticky aktualizují, když se uživatelé přihlásí. Chcete-li tomu zabránit, dokud nebudou aktualizovány všechny wikiny, nastavte až   na všech wikinách a odeberte to na všech wikinách, když byly aktualizovány, abyste zajistili použití silnějšího šifrování.



Sdílení více tabulek
Můžete sdílet i jiné tabulky než uživatelskou, ale buďte při tom opatrní. Pokud tabulka obsahuje data specifická pro jednu wiki, sdílení může způsobit problémy. Všimněte si, že každá ze zde uvedených podsekcí předpokládá, že sdílíte také tabulku uživatelů. Kdykoli přidáváte další tabulky, nezapomeňte buď připojit k poli nebo zahrnout uživatelskou tabulku do nové definice pole.



Tabulka ipblocks
Sdílením tabulky můžete mít "globální bloky", takže blok na jedné wiki zablokuje uživatele nebo IP na všech ostatních wikinách využívajících sdílenou databázi.

Upozornění
Při sdílení tabulky ipblocks mohou nastat drobné problémy:


 * Pole  je nastaveno jako "důvod" na Special:Block při blokování uživatele. Když zablokovaný uživatel uvidí zprávu "Jste zablokováni", tato je analyzována jako wikitext a odkazy jsou analyzovány na Special:BlockList, budete se muset při blokování uživatele ujistit, že zpráva dává smysl na všech wikinách.
 * Protokoly bloků nebudou sdíleny (nedoporučujeme sdílení tabulky ).



Tabulka user_groups
Sharing the table will allow you to have global user groups.

Caveats

 * As with the block log, the user rights log is not shared.
 * All user groups will be global. You can work around this somewhat by customizing your user groups. For example, to have admins on one wiki be separate from admins on another, you could do something like the following:
 * In the config for wiki 1:


 * In the config for wiki 2:


 * To prevent bureaucrats on one wiki from assigning themselves rights on other wikis that they shouldn't have, you can do a similar configuration to the above, but remove the 'userrights' right that allows them to set any group, and use / instead.

Other tables
This section covers other tables, with less common reasons to share, as well as which tables not to share.


 * The interwiki table contains mostly static data; it may be useful to share if you have many custom interwikis.
 * The site_stats table could possibly be shared, to aggregate data over all your wikis.
 * By default, the table is included in the list of shared tables. If your wikis were started using MediaWiki 1.15 or older, you should probably keep this for backward compatibility, as user preferences will be silently automatically migrated from the user table to the user_properties table. Otherwise, you can remove this from the array to allow users to have different preferences on each wiki (if desired)

Most other tables should not be shared, as they include wiki-specific data, typically connections to pages via a pageid or a namespace/title combination. This includes (but is not limited to):


 * Any of the links tables (pagelinkstemplatelinks, etc.)
 * The page table
 * The revision table
 * The image table (to have a shared media repository, see )

For more details, see