远程服务器上的 MySQL 连接如何工作?

远程服务器上的 MySQL 连接如何工作?

当我本地连接到我的 MySQL 数据库时我使用:

$host = 'localhost';
$db = 'myDB';
$user = 'root';
$pass = '';

当我的网站驻留在远程服务器上时,我使用以下参数建立 MySQL 连接:

$host = 'localhost';
$db = 'myDB';
$user = 'myUuserName';
$pass = 'myPAss';

奇怪的是,我同时使用了$host ='本地主机';并且它在远程服务器上也能工作?为什么?这怎么可能?难道不应该是我的域名而不是“localhost”吗?

答案1

localhost 是相对于文件执行位置而言的。对于远程主机,它连接到远程端的 mysql 数据库。但这仅在您两侧都有 mysql 服务器且两侧都配置了相同的数据库/数据时才有效。

答案2

如果您有隧道(可能是 ssh),这可以工作。隧道的本地端将监听 localhost(127.0.0.1),并将连接复制到远程服务器。更可能的是,您在本地运行 MySQL 并连接到本地 MySQL 服务器。

要连接到远程服务器,请使用服务器的名称或其 IP 地址作为主机。这仅在 MySQL 监听接口时才有效。在许多系统上,MySQL 仅监听环回 (localhost) 接口。您需要将 my.cnf 中的绑定地址从“127.0.0.1”更改为“0.0.0.0”,然后重新启动数据库。

mysql 用户表中的权限可以指定主机。如果您的用户定义为“user@localhost”,您将无法从远程服务器连接。需要将其指定为“user@%”或“user@remotehost”才能启用远程访问。

相关内容