MySQL — 通过本地 /tmp/mysql.sock 启用与远程服务器的连接

MySQL — 通过本地 /tmp/mysql.sock 启用与远程服务器的连接

我经营一家共享托管服务提供商,我们希望将我们的托管迁移到高可用性(跨多个数据中心复制)设置。我们创建了一个具有故障转移功能的复制 MySQL 设置,它运行良好,我们想将所有客户的数据库迁移到该设置。

唯一的问题是我们有许多客户,他们都将他们的 Wordpress、Drupal 等安装配置为通过本地套接字连接到 MySQL,而不是连接到远程服务器的地址。

我不愿意手动去更改所有客户站点的连接声明。

我最希望看到的是一个程序,它监听 /tmp/mysql.sock 并将连接转发到我指定的远程服务器。我见过 SQL Relay,但它似乎要求我将所有数据库名称、用户名和密码硬编码到其配置文件中。这对我来说行不通,因为我们的用户一直在动态添加新数据库,我不想每次都编写代码来更新 SQLRelay 的配置文件。

有人知道如何做到这一点吗?

或者,我接受如何在 PHP 级别处理此问题的想法。(即将任何尝试调用 mysql_connect() 重定向到该主机名而不是 localhost)

谢谢,凯文

答案1

你可能想要MySQL 代理代理与真实服务器的连接。

答案2

目录中/etc/wordpress应该有一个每个站点的配置文件。它们的格式为“config-网站名称.php"。它们应该有以 开头的行define('DB_HOST',。编辑定义的值为 mysql 主机的名称。

验证远程主机上 mysql 中的权限,以确保它们允许用户从 Web 服务器进行连接。该表mysql.user有一个主机名column,可用于限制对主机的访问。将主机名设置为%允许任何主机进行连接。将其设置为将要连接的主机的名称更为安全。

Drupal 应该使用类似的机制。

您可以通过启用服务器上的 mysql 进行监听localhost并让用户从套接字转换到此处来开始转换。

相关内容