连接到另一个IP(服务器)上的MySQL,PHP [重复]
Posted
技术标签:
【中文标题】连接到另一个IP(服务器)上的MySQL,PHP [重复]【英文标题】:Connecting to MySQL on another IP (server), PHP [duplicate] 【发布时间】:2012-10-06 01:12:16 【问题描述】:当代码在 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:无法连接到'localhost'(10061)上的MySQL服务器[重复]
将我的 React 应用程序连接到 PHP 服务器上的 MySQL 数据库