Manual:Shared database/fr

Cette page fournit un bref aperçu sur l'utilisation des bases de données partagées dans MediaWiki. La plupart des informations présentes ici devraient fonctionner avec une installation simple de MediaWiki (sans extensions). Toute contrainte des extensions est notée. Notez que cela est conçu autour des bases de données MySQL. La prise en charge de SQLite a été ajoutée en MediaWiki 1.17. La prise en charge de PostgreSQL a été ajoutée en MediaWiki 1.19. Les autres moteurs de bases de données peuvent ne pas prendre en charge les bases de données partagées de cette manière.

Bases
Les bases de données partagées sont configurées par 3 globales principales dans votre fichier  :



Toutes ne vous sont pas forcément nécessaires, cela dépend de vos besoins et de votre environnement.



La configuration la plus simple : une table utilisateur partagée
Une table partagée des utilisateurs peut être utilisée si vous avez plusieurs wikis se partageant l'enregistrement des utilisateurs, de sorte que ces derniers n'aient à se connecter qu'à un seul wiki.

Par défaut, $wgSharedTables contient les tables user et user_properties. L'ajout de 'actor' est prévu.



Droits sur la base de données
L'utilisateur MySQL du wiki partagé doit avoir au moins les droits SELECT et UPDATE sur les tables des utilisateurs du wiki principal. Si vous avez différents utilisateurs MySQL pour chacun des wikis, vous devez ajouter des permissions supplémentaires à cellles de l'utilisateur du wiki partagé, comme indiqué dans la configuration de ce wiki. Pour ceux qui utilisent un hébergement partagé, notez que ceci est possible pour quelques mais pas tous les fournisseurs. Vous pouvez réaliser cela avec des commandes MySQL similaires à :

Cela permet à votre wiki de lire les utilisateurs dans la table principale, et de mettre à jour ces tables, ce qui arrive quand un utilisateur se connecte.



Partager les sessions
Pour partager des sessions de connexion entre vos wikis, initialisez avec tous les sous-domaines qui se trouvent sous votre domaine racine. Par exemple, si vous disposez des sites en.example.comfr.example.compool.example.com, déclarez :

Mise à jour
Depuis MediaWiki 1.21, lors de la mise à jour de MediaWiki à partir de l'installateur web, $wgSharedTables doit avoir été purgé temporairement juste avant cette opération. Sinon les tables partagées ne seront pas du tout modifiées (ni les tables avec $wgSharedPrefix, ni celles avec $wgDBprefix), ce qui peut conduire à l'échec de la mise à jour.

Lorsque la mise à jour est faite à partir de la ligne de commande en exécutant le script, il faut utiliser le paramètre  pour mettre à jour les tables partagées.

Dans MediaWiki 1.24 le type par défaut du mot de passe qui était MD5 est devenu PBKDF2, et la valeur de hachage du mot de passe est mise à jour automatiquement lorsque l'utilisateur se connecte. Pour éviter que cela ne se produise avant que tous les wikis ne soient à jour, mettez à   et supprimez-le partout une fois la mise à jour terminée, pour vous assurer qu'un cryptage plus fort est utilisé.



Partager davantage de tables
Vous pouvez partager des tables qui ne soient pas des tables d'utilisateurs, mais redoublez alors d'attention. Si une table contient des données spécifiques à un wiki, le partage peut poser problème. Notez-bien que chacune des sous-sections ici suppose que vous partagiez également la table des utilisateurs. Si vous devez ajouter d'autres tables, assurez-vous d'avoir complété le tableau ou bien d'inclure la table des utilisateurs dans la définition du nouveau tableau.



Table ipblocks
En partageant la table vous pouvez obtenir des blocages globaux de sorte que le blocage sur un  wiki bloque l'utilisateur ou l'adresse IP sur tous les autres wikis qui utilisent la base de données partagée.

Mises en garde
Il peut y avoir quelques problèmes mineurs quand la table ipblocks est partagée :


 * Le champ  correspond au motif 'reason' dans Special:Block, lors du blocage d'un utilisateur. Quand un utilisateur bloqué voit le message «Vous êtes bloqué », ceci est analysé comme du wikicode et les liens sont analysés sur Special:BlockList, vous devrez vous assurer lorsque vous bloquez un utilisateur, que les messages ont un sens sur tous les wikis.
 * Les journaux des blocages ne sont pas partagés (il n'est pas recommandé de partager la table ).



Table user_groups
En partageant la table vous aurez des groupes globaux d'utilisateurs.

Mises en garde

 * De la même manière que le journal des blocages, le journal des droits utilisateur n'est pas partagé.
 * Tous les groupes utilisateurs seront globaux. Vous pouvez contourner cela d'une certaine façon, en personnalisant vos groupes utilisateur. Par exemple pour séparer les administrateurs d'un wiki et d'un autre, vous pouvez faire par exemple :
 * Dans la configuration du wiki 1 :


 * Dans la configuration du wiki 2 :


 * Pour éviter que les bureaucrates d'un wiki n'assignent à eux-même des droits qu'ils n'ont pas à avoir sur les autres wikis, vous pouvez créer une configuration similaire à celle ci-dessus, mais en supprimant les droits 'userrights' qui leurs permettent de définir un groupe quelconque et en utitisant / à la place.



Autres tables
Cette section couvre les autres tables pour lesquelles il y a moins de raisons communes à les partager, ainsi que les tables qui ne doivent pas être partagées.


 * La table interwiki contient principalament des données statiques; cela peut être utile quand vous avez plusieurs liaisons interwikis personnalisées.
 * La table site_stats peut éventuellement être partagée pour aggréger les données de tous vos wikis.
 * Par défaut, la table est incluse dans la liste des tables partagées. Si votre wiki a été créé avec MediaWiki 1.15 ou plus ancien  vous devriez éventuellement garder ceci pour la compatibilité arrière, car les préférences de l'utilisateur seront migrées automatiquement sans préavis de la table user vers la table user_properties. Sinon vous pouvez supprimer ceci du tableau pour permettre aux utilisateurs d'avoir des préférences différentes sur chaque wiki (si cela est souhaité)

La plupart des autres tables ne doivent pas être partagées parce qu'elles contiennent des données spécifiques au wiki, typiquement les connexions aux pages via un pageId ou une combinaison espace de noms et titre. Ceci comprend (mais n'est pas limité à) :


 * Une table de liens quelconque (pagelinkstemplatelinks, etc.)
 * La table page
 * La table revision
 * table image (pour disposer d'un dépôt de médias partagé, voir )

Pour plus de détails, voir



Voir aussi

 * - Une méthode différente pour avoir des tables utilisateur partagées. Utilisé par Wikimedia, et probablement l'option la plus facile pour fusionner des wikis déja installés.
 * - extension permettant de bloquer globalement des adresses IP, sans partager d'autres bases de données. Les droits pour bloquer globalement des utilisateurs sont indépendants de ceux nécessaires pour le 'block' normal.
 * - Extension qui autorise les groupes globaux d'utilisateurs et qui facilite leur gestion via Special:GlobalUserrights.