совместное использование таблиц базы данных несколькими экземплярами drupal, различными учетными записями пользователей БД - PullRequest
0 голосов
/ 22 февраля 2011

У меня установлено несколько экземпляров drupal, и я хотел бы поделиться таблицей пользователей и сеансов из одного экземпляра на всех других моих сайтах. Я помещаю правильный префикс в файл settings.php $ db_prefix = array ( 'default' => 'db1.', 'session' => 'db2.', 'users' => 'db2.', );

Db1 и db2 имеют собственную учетную запись пользователя db. Я также предоставляю учетную запись и учетные данные пользователя в файле settings.php. $ db_url = array ( 'default' => 'mysql: // user1: пароль @ localhost / db1', 'users' => 'mysql: // user2: пароль @ localhost / db2', );

но когда drupal обращается к db2, он не знает, использовать учетные данные db2 для доступа к пользовательской таблице на db2. Я продолжаю использовать по умолчанию. Я также попытался использовать имя db и имя сайта db2 вместо «user» в $ db_url, но не увенчался успехом.

Есть ли способ заставить drupal использовать другую учетную запись при доступе к db2 в файле настроек. Я знаю, что могу просто назначить user1 на db1 доступ к пользовательской таблице на db2 в mysql, но предпочел бы не делать этого, если это можно сделать в settings.php

1 Ответ

0 голосов
/ 22 февраля 2011

Нельзя.

Например, есть запросы, которые присоединяются к {узлу} и {пользователю} следующим образом:

SELECT n.*, u.name FROM {node} n INNER JOIN {user} u ON u.uid = n.nid

Даже использование разных баз данных может быть проблематичным и не совсем то, что предполагается использовать $ db_prefix.

Итак, у вас есть два варианта:

  • Создать общего пользователя для обеих баз данных.

  • Если вы не можете этого сделать (например, из-за того, что ваша хостинговая среда имеет отображение 1: 1 между пользователями и базами данных), переместите их в одну и ту же базу данных, но используйте другой префикс. Например, «site1_» и «site2_».

...