我可以使用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");
我做错了什么?
答案 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是危险的。
根据需要创建具有足够权限的新用户。
答案 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_ *函数。