连接到另一个IP(服务器)上的MySQL,PHP [重复]

Posted

技术标签:

【中文标题】连接到另一个IP(服务器)上的MySQL,PHP [重复]【英文标题】:Connecting to MySQL on another IP (server), PHP [duplicate] 【发布时间】:2012-10-06 01:12:16 【问题描述】:

可能重复:Connecting to remote mysql server using php

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

我想从另一个 IP 连接到同一个 MySQL 服务器:

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");

我做错了什么?

【问题讨论】:

你为什么认为你做错了什么?请不要回复“因为它不起作用” "但是说我的新 IP 是 12.123.123.12" --- 你的 mysql 服务器 ip 是多少? 我尝试用 echo mysql_ping() ping 连接;并且连接不正确。还说,没有选择数据库。 请不要使用mysql_* 函数编写新代码。它们不再维护,社区已经开始deprecation process。看到red box?相反,您应该了解prepared statements 并使用PDO 或MySQLi。如果你不能决定哪一个,this article 会帮助你。如果你选择 PDO,here is good tutorial. 【参考方案1】:

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

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

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

用你的mysqlserver替换它就可以了

【讨论】:

这是之后的错误,Can't connect to MySQL server on '108.166.79.24' (111) 然后我尝试制作IP,12.123.123.12/phpmyadmin/,这是我登录phpmyadmin的地方,错误是不同的。未知 MySQL 服务器主机 '108.166.79.24/phpmyadmin/' (11) 嗯,我认为你做的不对。为什么不用正确的mysqlserver ip地址替换ip。这不一定是您的网站 IP 地址,如果您使用托管公司,他们通常会向您提供此信息【参考方案2】:
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 是危险的。

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

(Reference)

【讨论】:

root 用于任何事情都是危险的 我明白了,怎么换用户? 见this。同样,创建不同的用户是一种更好的方法。 @Daniel Fein:尽管这个答案是正确的,但您当前的问题与用户无关【参考方案3】:

首先,您需要确保在查询中回显 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_* 函数。

【讨论】:

【参考方案4】:

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

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

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

【讨论】:

以上是关于连接到另一个IP(服务器)上的MySQL,PHP [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 连接到远程 MySQL 数据库的网页

无法使用php连接错误连接到mysql:无法连接到'localhost'(10061)上的MySQL服务器[重复]

将我的 React 应用程序连接到 PHP 服务器上的 MySQL 数据库

从远程服务器连接到 Amazon EC2 上的 mysql

PHP 我的管理员:#2003 - 无法连接到“localhost”上的 MySQL 服务器 (10061)

无法通过linux上的套接字连接到本地MySQL服务器