当我本地连接到我的 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”才能启用远程访问。