【问题标题】:sharing database tables across multiple drupal instance, different db user accounts跨多个 Drupal 实例共享数据库表,不同的数据库用户帐户
【发布时间】:2011-02-22 14:55:32
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    你不能。

    例如,像这样连接 {node} 和 {user} 的查询:

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

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

    所以,你有两个选择:

    • 为两个数据库创建一个公共用户。

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

    【讨论】:

      猜你喜欢
      • 2016-07-17
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多