主机无法连接到此MySQL服务器以进行客户端-服务器应用程序。

3
我刚刚把我的表格从一个网络主机导出到另一个(AWS)。本以为一切都会顺利进行(当然了),但是,所有可能出错的地方都出错了。
在查询我的数据库时(之前没有出现过这个问题),我得到了这个错误:
SQLSTATE[HY000] [1130] Host '<my ip address>' is not allowed to connect to this MySQL server 这与此帖中的错误相同: Host 'xxx.xx.xxx.xxx' is not allowed to connect to this MySQL server 该帖中的解决方案似乎围绕着拥有管理用户展开。我正在开发一个聊天应用程序,因此每个用户都需要访问服务器(所以我确定给他们全部管理员权限是一个坏主意)。
那个链接中Pascal的回答说,"如果您正在使用mysql进行客户端/服务器应用程序,请优先考虑子网地址。" 但是我真的不明白他的意思。由于解决方案的数量,我不确定根据我的情况应该遵循哪个解决方案。
我该如何解决这个问题?

1
让mysqld监听0.0.0.0:3306 - Aitch
3个回答

1

MySQL有安全表来确定谁可以连接以及从哪个主机IP地址进行连接。

以下是一篇关于如何做到这一点的好文章:

http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html

如果您有很多连接,请考虑设置一个服务器来接受连接并与SQL服务器通信。最简单的方法是设置REST接口并使用Web服务器。Web服务器通常也高度优化且相对无错误。
在AWS上的类似架构中,我愉快地使用nginx。

嘿Charlie,我成功通过以下方式连接到我的MySQL服务器: $ mysql -u webadmin –h myElasticIpAddress但这让我吓了一跳,因为这意味着拥有我的IP的任何人都可以轻松地开始操纵数据。虽然目前我没有什么重要的东西,但这显然不是理想情况。既然用户自己不必发出命令(我只需将他们的输入发送到我的PHP脚本,服务器上的脚本处理查询),那我应该删除任何查询权限吗?我对这一步感到相当困惑。 - Kacy
1
接受了这个答案,因为下面的答案告诉我我需要添加一个用户,但实际上并不需要。虽然两个答案都引用了同一个链接(非常有帮助),但这个答案是先发布的。 哦,最终终于!我的应用程序可以连接到服务器了,一切都很好!!! :) - Kacy

1

请确保在my.cnf文件中有bind-address=YOUR-SERVER-IP,并且确保您有一个用户hd1@172.31.39.86hd1@%,后者是MySQL服务器上的通配符。更多信息在这里。您还可能需要在AWS控制台的安全组部分授予对端口3306(默认MySQL端口)的访问权限。


我按照你们两个给我的链接进行了操作,唯一还没做的就是添加那个用户。 我有一个名为“%”的用户,具有以下属性: 用户:任意,主机:%,密码:--,全局权限:使用,授权:否。 我应该将授权改为“是”吗? - Kacy
1
我很好奇为什么你告诉我把一个用户hd1@172.31.39.86放进去,而那其实是你的用户名...? 哈哈 - Kacy

0
// IN YOUR MYSQL WORKBENCH You Have to Execute below query

CREATE USER 'root'@'1.2.1.5(Your Application Server IP)' IDENTIFIED BY 'pass';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.200.1.54' WITH GRANT OPTION;

AFTER CREATING YOU CAN VIEW USING BELOW QUERY

SELECT * FROM mysql.user WHERE User = 'root';

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接