两个不同的WordPress站点--相同的服务器和IP地址。获取对数据库%1(共%2)的访问权限

时间:2019-06-27 作者:Debbie Kurth

有点不寻常的要求。我有一系列单独的wordpress网站。他们不是一个多站点,因为我需要每个站点为网络的各个部分提供唯一的域名。

我想做的是,能够访问驻留在其中一个站点上的唯一插件表,而不是出于数据显示目的访问另一个站点。我这样做的原因是,此订阅服务的所有付款都通过一个网站进行,而不是通过另一个网站。省钱,无需购买3个或更多版本的woocommerce订阅。

到目前为止,我已经尝试:

 define(\'DB_SERVER\', \'xxx.xxx.xxx.xxx\');
 define(\'DB_USERNAME\', \'sister_site\');
 define(\'DB_PASSWORD\', \'xxxxxx\');
 define(\'DB_DATABASE\', \'database1_wrdp1\');  
 $db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
 if (!$db)
   {
   DebugLog("Error: Unable to connect to MySQL."  );
   DebugLog("Debugging errno: " . mysqli_connect_errno());
   DebugLog("Debugging error: " . mysqli_connect_error());
   }
else
  DebugLog(\'Connection SUCCESS!\' );
我得到错误:Error: Unable to connect to MySQL. Access denied for user xxxxx

我已经为数据库分配了一个唯一的用户,并将其插入到othersites PHP代码中,我正在尝试连接。没有运气。

任何人都知道一个站点如何访问另一个站点中的wordpress数据库。所有站点都位于相同的IP地址、相同的服务器上,只有独立的帐户。

1 个回复
SO网友:Debbie Kurth

明白了。。。花了一整天,但现在我终于可以睡觉了。

此解决方案适用于驻留在同一服务器上的一组数据库,即使它们位于不同的帐户中。因此,不需要在CPanel中设置远程服务器访问。关键是找到您希望访问的wordpress数据库的用户名和密码。这可以在wp\\U配置中完成。php或为Cpanel中的数据库分配一个新用户。

我遇到的第一个问题是#define语句需要使用双引号,而不是单引号。

要使用我最初尝试的方法(再次从同一台服务器)访问数据库,即使它是不同的帐户,如下所示:

 $db = mysqli_connect("localhost","user name","password","database name");
 if (!$db)
   {
    DebugLog("Error: Unable to connect to MySQL."  );
    DebugLog("Debugging errno: " . mysqli_connect_errno());
    DebugLog("Debugging error: " . mysqli_connect_error());
   }
 else
  {
  DebugLog(\'3 Connection SUCCESS!\' );
  mysqli_close($db);
 }
但这不允许以传统方式访问WordPress数据库。由于目标是拥有一个wordpress站点,从另一个wordpress站点访问数据,因此需要另一种方法,并且能够使用相同的函数调用来回访问,这需要通过wordpress方式访问数据。这就是解决方案:

  function connectAltDB()
   {
    global $new_wpdb;
    //                   "user","password", "database", "host/ip"
    $new_wpdb = new wpdb("wrdp1_user", "YourPass", "wrdp1_db", "localhost");
    $new_wpdb->set_prefix(\'wp_\', $set_table_names = true);
    $new_wpdb->show_errors();

   // Test the connection with a simple retrieval - can be commented out
   //$sql_query = $new_wpdb->prepare("SELECT * FROM wp_users WHERE id=%d", 1);
  // $rows      = $new_wpdb->get_row($sql_query, ARRAY_A);
  // DebugLog($rows[\'user_login\']);

  return $new_wpdb;
  }

 function CloseconnectAltDB()
  {
  global $new_wpdb;
  $new_wpdb->close()  ; 
  }
希望这对将来的人有所帮助。

相关推荐

需要有关MySQL中嵌套数组格式的帮助

我构建了一个插件,可以运行CSV文件并将变量解析为自定义帖子的自定义字段。在我的自定义帖子类型中,我构建了一个带有可重复自定义字段的元框。此元框从MySQL获取数据的格式如下:a:3:{i:0;a:2:{s:5:\"title\";s:7:\"Title 1\";s:5:\"point\";s:19:\"55.635656,12.506767\";}i:1;a:2:{s:5:\"title\";s:7:\"Title 2\";s:5:\"point\";s:19:\"55.625668,12.502392