当我在本地连接到我的MySQL数据库时,我使用:
$host = 'localhost'; $db = 'myDB'; $user = 'root'; $pass = '';
当我的站点驻留在远程服务器上时,我使用以下参数来build立MySQL连接:
$host = 'localhost'; $db = 'myDB'; $user = 'myUuserName'; $pass = 'myPAss';
奇怪的是我用$ host ='localhost'; 它也可以在远程服务器上工作? 为什么? 这怎么可能? 难道不是我的域名而不是“本地主机”?
localhost是相对于文件执行的地方。 到你的远程主机,它连接到远程端的mysql数据库。 这只会在双方都有mysql服务器的情况下工作,而且两者都configuration了相同的数据库/数据。
如果你有一个隧道(ssh也许),这可以工作。 你本地的隧道端将监听本地主机(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”来启用远程访问。