web-dev-qa-db-fra.com

Comment partager une table entre 2 ou plusieurs bases de données?

J'ai un Joomla! site et maintenant je veux faire quelques sous-domaines. Mais, je veux que les utilisateurs doivent être les mêmes dans les deux. Par exemple, si un utilisateur se connecte au site principal et accède au sous-domaine en même temps, il n'aura pas besoin de se connecter à nouveau.

J'ai trouvé que, si je partage ces tables, ça peut aller:

tables #__utilisateur% et #__sessions

Des questions:

  1. Comment puis-je le faire?
  2. Puis-je partager des utilisateurs entre 2 ou plus Joomla! bases de données?
3
Murad

http://extensions.joomla.org/extension/mightysites

Avec l'aide de ce composant, vous pourrez partager le tableau "Utilisateurs" entre deux ou plusieurs serveurs Joomla! sites Internet.

Il vous fournira du contenu, des utilisateurs et d'autres fonctionnalités de partage de table de base de données entre deux sites dans diverses configurations.

1
Brijesh Savaliya

Oui, vous pouvez partager les utilisateurs d'un seul Joomla! site à plusieurs autres Joomla! sites (tant que vous les conservez sur la même version de J!). Voici comment vous le faites dans Joomla! 2.5 - 3.6 (version actuelle):

  1. Choisissez le site "maître" à partir duquel les utilisateurs seront partagés (c'est la base de données qui stockera les données).
  2. Copiez le $secret valeur du site principal configuration.php fichier dans le même fichier sur tous les sites "soeurs".
  3. Assurez-vous que les utilisateurs de chacune des bases de données du site partenaire ont accès à la base de données du site maître.
  4. Exécutez le script SQL suivant sur chacune des bases de données des sites soeurs:

    RENAME TABLE `josPrefix2_users` TO `josPrefix2_bak_users`;
    RENAME TABLE `josPrefix2_session` TO `josPrefix2_bak_session`;
    RENAME TABLE `josPrefix2_usergroups` TO `josPrefix2_bak_usergroups`;
    RENAME TABLE `josPrefix2_user_notes` TO `josPrefix2_bak_user_notes`;
    RENAME TABLE `josPrefix2_user_profiles` TO `josPrefix2_bak_user_profiles`;
    RENAME TABLE `josPrefix2_user_usergroup_map` TO `josPrefix2_bak_user_usergroup_map`;
    RENAME TABLE `josPrefix2_viewlevels` TO `josPrefix2_bak_viewlevels`;
    
    CREATE VIEW josPrefix2_users AS SELECT * FROM dbSite1.josPrefix1_users;
    CREATE VIEW josPrefix2_session AS SELECT * FROM dbSite1.josPrefix1_session;
    CREATE VIEW josPrefix2_usergroups AS SELECT * FROM dbSite1.josPrefix1_usergroups;
    CREATE VIEW josPrefix2_user_notes AS SELECT * FROM dbSite1.josPrefix1_user_notes;
    CREATE VIEW josPrefix2_user_profiles AS SELECT * FROM dbSite1.josPrefix1_user_profiles;
    CREATE VIEW josPrefix2_user_usergroup_map AS SELECT * FROM dbSite1.josPrefix1_user_usergroup_map;
    CREATE VIEW josPrefix2_viewlevels AS SELECT * FROM dbSite1.josPrefix1_viewlevels;
    

Remarque 1: Pour le script ci-dessus, vous devez:

  1. Remplacer dbSite1 avec le nom de la base de données de votre site maître.
  2. Remplacer josPrefix1 avec le préfixe des tables de base de données de votre site maître.
  3. Remplacer josPrefix2 avec le préfixe des tables de base de données de votre site partenaire.

Remarque 2: Si des données sont déjà stockées sur l'un des sites soeurs, vous devrez peut-être mettre à jour l'ID utilisateur de nombreuses entrées de la base de données. Les identifiants d'utilisateur auront changé. Exemples: auteur de l'article et utilisateur modifié, journaux d'accès LogMan, etc.


Références:

http://forum.joomla.org/viewtopic.php?f=470&t=473666#p2015114http://forum.joomla.org/viewtopic.php?f=470&t= 473666 & p = 3424061 # p2850629

1
Michael Yaeger