1

可能重复:
使用 PHP 连接到远程 MySQL 服务器

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

我想连接到同一个 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

4 回答 4

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登录。您必须更改它以允许您现在指定的主机创建不同的帐户(推荐)。使用 root 是危险的。

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

参考

于 2012-10-16T01:07:42.940 回答
1

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

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

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

于 2012-10-16T01:17:32.850 回答
0

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

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

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

用你的mysqlserver替换它,它会工作

于 2012-10-16T01:07:40.317 回答
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_* 函数。

于 2012-10-16T01:16:34.573 回答