Мультисайтинг - объединение таблицы «users»

Аватар пользователя Modjahed Modjahed 18 ноября 2009 в 9:40

Мои предыдущие посты:
http://www.drupal.ru/node/36823
http://www.drupal.ru/node/36858

Необходимо, чтобы на двух разных сайтах с двумя базами данных были общие пользователи. Drupal 6.14. Необходимо чтобы базы данных сайт1 и сайт2 использовали общую таблицу «users» сайт1

При создании нового пользователя на сайт1 на сайт2 пользователи не создаются. При удалении таблицы «users» с сайт2 вылетают ошибки.

sittings.php на двух сайтах редактирую следующим образом:

Сайт 1
$db_prefix = array(
* 'default' => '',
* 'users' => 'caйт1.',
* 'sessions' => 'caйт1.'
* 'role' => 'caйт1.'
* 'authmap' => 'caйт1.'

$db_url = 'mysqli://root@localhost/caйт1';
$db_prefix = '';

Сайт 2
$db_prefix = array(
* 'default' => '',
* 'users' => 'caйт1.'
* 'sessions' => 'caйт1.'
* 'role' => 'caйт1.'
* 'authmap' => 'caйт1.'

$db_url = 'mysqli://root@localhost/caйт2';
$db_prefix = '';

Помогите разобраться почему сайт2 не хочет использовать таблицу «users» для сайт1

Комментарии

Аватар пользователя Modjahed Modjahed 18 ноября 2009 в 9:50

penexe wrote:
базы разные

Мне и нужно, чтобы сайт1 и сайт2 использовали таблицу "users" БД сайт1

Аватар пользователя Valeratal Valeratal 18 ноября 2009 в 10:00

а что нужно у первого сайта что то писать в сеттингс?

это зачем?

Сайт 1
$db_prefix = array(
* 'default' => '',
* 'users' => 'caйт1.',
* 'sessions' => 'caйт1.'
* 'role' => 'caйт1.'
* 'authmap' => 'caйт1.'

сегодня буду пробовать объединить юзверов. Отпишусь по результатам

Аватар пользователя Modjahed Modjahed 18 ноября 2009 в 10:08

Valeratal wrote:
а что нужно у первого сайта что то писать в сеттингс?

это зачем?

Сайт 1
$db_prefix = array(
* 'default' => '',
* 'users' => 'caйт1.',
* 'sessions' => 'caйт1.'
* 'role' => 'caйт1.'
* 'authmap' => 'caйт1.'

сегодня буду пробовать объединить юзверов. Отпишусь по результатам

По идее необходимо. Буду ждать Ваших результатов. Отпишитесь в любом случае!

Аватар пользователя Valeratal Valeratal 18 ноября 2009 в 10:46

по идее, у основного сайта и так собственная база
или я чего то не так понимаю.

Аватар пользователя Modjahed Modjahed 18 ноября 2009 в 15:31

Везде пишут, что "." нужны для того,чтобы таблица ссылалась на аналогичную таблицу в другой базе, а "_" для того, чтобы таблица ссылалась на префикс таблицы.

Аватар пользователя Valeratal Valeratal 18 ноября 2009 в 20:49

мда, plesk не дает прописать к новой базе уже имеющегося пользователя
написал в саппорт, жду ответа

Аватар пользователя Modjahed Modjahed 18 ноября 2009 в 21:17

Valeratal wrote:
мда, plesk не дает прописать к новой базе уже имеющегося пользователя
написал в саппорт, жду ответа

Как ответят или что либо получится, обязательно напишите сюда.

Аватар пользователя alexweb alexweb 19 ноября 2009 в 1:42

Не нужно мучить плеск для того, чтобы иметь возможность обращаться к разным базам.
$db_url['default'] = 'mysqli://root:passwd@localhost/drupal6';
$db_url['second'] = 'mysqli://root2:passwd2@localhost/second';

Ну и $db_prefix
$db_prefix = array(
'default' => '',
'users' => 'second.',
'sessions' => 'second.',
'role' => 'second.',
'authmap' => 'second.'
......
);

И да... бэкапы все равно нужно дekfnm

Аватар пользователя Modjahed Modjahed 19 ноября 2009 в 6:59

Вы производили установку по такой схеме?

1. Создали сайт 1;
2. Создали сайт 2;
3. Из БД сайта 1, скопировали таблицы в БД сайта 2;
4. Прописали нужные префиксы.

Аватар пользователя Valeratal Valeratal 19 ноября 2009 в 7:28

alexweb, спасибо
буду пробовать

p.s. пользователя можно присобачить, но через команду mysql grant

Аватар пользователя Modjahed Modjahed 19 ноября 2009 в 10:29

Хорошая статья но это когда одна общая база и разные сайты. Хорошо описана. Сделал по ней все как написано. Результат тот - же. Сайты есть, общих таблиц пользователей нет. Пробовал на Denwer и непосредственно на хостинге. Ни чего не понимаю. Ведь все четко делаю, а общих таблиц нет!

Аватар пользователя Valeratal Valeratal 19 ноября 2009 в 21:15

у меня не получается

ошибки

* user warning: SELECT command denied to user 'free'@'localhost' for table 'users' query: SELECT * FROM drup.users u WHERE uid = 0 in /путь к субдомену/modules/user/user.module on line 167.
* user warning: SELECT command denied to user 'free'@'localhost' for table 'sessions' query: SELECT COUNT(sid) AS count FROM drup.sessions WHERE timestamp >= 1258653339 AND uid = 0 in /путь к судомену/includes/session.inc on line 119.
* user warning: SELECT command denied to user 'free'@'localhost' for table 'users' query: SELECT DISTINCT u.uid, u.name, s.timestamp FROM drup.users u INNER JOIN drup.sessions s ON u.uid = s.uid WHERE s.timestamp >= 1258653339 AND s.uid > 0 ORDER BY s.timestamp DESC in /путь к субдомену/modules/user/user.module on line 764.

видимо действительно нужно настраивать mysql grant

Аватар пользователя Valeratal Valeratal 19 ноября 2009 в 23:17

я общие не удалял - основной же сайт работает (а именно его таблицы юзерс и сессии я пытаюсь "отдать" еще и второму сайту)

Аватар пользователя Valeratal Valeratal 20 ноября 2009 в 9:35

пока добавлял пользователей к базе через phpmyadmin
сломал SQL Smile
создал пользователя
затем решил отредактировать
phpmyadmin спросил - создать нового и убить существующего
я согласился - в итого добавился новый, а старый не удалился Smile

теперь SQL падает через какое то вермя после запуска Smile

Аватар пользователя Modjahed Modjahed 20 ноября 2009 в 18:01

Обалдеть! Не думал, что "мультисайтинг" окажется таким сложным занятием!