跨多个drupal实例,不同的db用户帐户共享数据库表

时间:2011-02-22 14:55:32

标签: drupal multiple-instances multiple-databases multiple-tables

我安装了多个drupal实例,并希望在我所有其他站点之间共享来自一个实例的用户和会话表。我在settings.php文件中放置了正确的前缀$ db_prefix = array(   'default'=> 'DB1。',   'sessions'=> 'DB2。',   'users'=> 'DB2。', );

Db1和db2拥有自己的db用户帐户。 我也在settings.php文件中提供了用户帐户和凭证。 $ db_url = array( 'default'=> 'MySQL的:// USER1:密码@本地/ DB1', 'users'=> 'MySQL的://用户2:密码@本地/ DB2', );

但是当drupal访问db2时,它不知道使用db2凭据来访问db2上的用户表。我继续使用默认值。我也尝试在$ db_url中使用db2的名称和db2的站点名称而不是“user”,但是没有成功。

在设置文件中访问db2时,有没有办法告诉drupal使用其他帐户。我知道我可以在db1中将user1分配给mysql中的db2上的用户表,但是如果可以在settings.php中完成,则不希望这样做。

1 个答案:

答案 0 :(得分:0)

你不能。

例如,加入{node}和{user}的查询就像这样:

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

即使使用不同的数据库也可能会出现问题,而且实际上并不是$ db_prefix应该使用的。

所以,你有两个选择:

  • 为两个数据库创建一个普通用户。

  • 如果您不能这样做(例如,因为您的托管环境在用户和数据库之间具有1:1映射),请将它们移动到同一数据库,但使用不同的前缀。例如'site1_'和'site2_'。