0

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

Db1 和 db2 有自己的 db 用户帐户。我也在 settings.php 文件中提供了用户帐户和凭据。$db_url = array('default' => 'mysql://user1:password@localhost/db1', 'users' => 'mysql://user2:password@localhost/db2', );

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

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

4

1 回答 1

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_”。

于 2011-02-22T18:42:56.737 回答