在另一个IP(服务器)上连接MySQL,PHP

时间:2012-10-16 01:05:36

标签: php mysql

  

可能重复:
  Connecting to remote MySQL server using PHP

我可以使用localhost成功连接到数据库,而代码位于MySQL所在的服务器上。

我想连接到同一个MySQL服务器,但是来自另一个IP:

mysql_connect("localhost","root","<password>");
mysql_select_db("db name");

但是说我的新IP是12.123.123.12

我试过了:

mysql_connect("12.123.123.12","root","<password>");
mysql_select_db("db name");

我做错了什么?

4 个答案:

答案 0 :(得分:3)

SELECT User, Host, Password FROM mysql.user;

示例输出:

+------+--------------------+----------+
| User | Host               | Password |
+------+--------------------+----------+
| root | localhost          |          |
| root | myhost.example.com |          |
| root | 127.0.0.1          |          |
| root | ::1                |          |
|      | localhost          |          |
|      | myhost.example.com |          |
+------+--------------------+----------+

默认情况下,您将看到root只允许从 localhost 登录。您必须更改它以允许您现在指定的主机 OR 创建一个不同的帐户(推荐)。使用root是危险的。

根据需要创建具有足够权限的新用户。

Reference

答案 1 :(得分:1)

大多数托管服务提供商(至少使用CPANEL的服务提供商)不允许跨域查询。如果您的托管使用的是CPANEL,则必须转到“DATABASES” - &gt; “REMOTE MySQL”并从运行查询的服务器添加IP地址。

如果您的托管,请不要使用CPANEL,请将主机的IP地址(12.123.123.12)添加到MySql的用户表中。

出于安全原因,最后一条评论是一个很好的做法,当您发布问题时,不要使用敏感信息作为IP地址!! 问候 路易斯

答案 2 :(得分:0)

如果它不起作用,您可以尝试显示错误

mysql_connect("12.123.123.12","root","<password>") or die("Error: ".mysql_error()); 

注意:主机名不一定是您的IP地址;它是mysqlserver的IP或名称

将其替换为您的mysql服务器,它将起作用

答案 3 :(得分:0)

首先,您需要确保在查询中回显MySQL错误:

 mysql_connect("12.123.123.12","root","<password>") or die(mysql_error());

检查MySQL服务器是否授予用户从远程主机连接的权限。这就是您通常会授予权限的方式:

GRANT ALL PRIVILEGES ON yourdb.* to 'theuser'@'localhost' IDENTIFIED BY 'thepassword';

如果需要从远程主机访问数据库,则必须从MySQL服务器设置以下权限语句:

GRANT ALL PRIVILEGES ON yourdb.* to 'theuser'@'<yourip>' IDENTIFIED BY 'thepassword';
-- grant privilege to all remote hosts
GRANT ALL PRIVILEGES ON yourdb.* to 'theuser'@'%' IDENTIFIED BY 'thepassword';

如果您具有MySQL服务器的管理访问权限,则可以通过以下命令检查权限:

 SHOW GRANTS;

顺便说一句:不推荐使用mysql_ *函数。仅使用mysqli_ *函数。