我安装了多个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中完成,则不希望这样做。
答案 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_'。