Amazon EC2 - 无法远程连接到 MariaDB

Posted

技术标签:

【中文标题】Amazon EC2 - 无法远程连接到 MariaDB【英文标题】:Amazon EC2 - Can't connect remotely to MariaDB 【发布时间】:2018-12-27 16:32:54 【问题描述】:

我正在配置我的 EC2 服务器。我设法安装了 php、laravel 等(虽然有点痛苦)。现在我

在 MariaDB 上创建了一个用户 从远程授予所有权限 在 my.cnf 中启用了 bind-address = 0.0.0.0 测试本地登录,有效 在安全组中为 mysql/Aurora、端口 3306、TCP、所有 IP(传入和传出)打开了规则

但仍然无法从远程登录,我明白了

ERROR 2003 (HY000): Can't connect to MySQL server on 'yyz.yyz.yyz.yyz' (110)

我能做什么?我没有任何类似的 iptables,一切都应该很简单……但事实并非如此:-(

我正在尝试使用此字符串从亚马逊网络外部连接

mysql -u myuser -pmypwd -h yyz.yyz.yyz.yyz -D myschema

请注意,我可以从服务器本身连接

mysql -u myuser -p -h localhost -P 3306 -D myschema

谢谢 马可

附:作为参考,这里是我的 MariaDB 用户

+---------------------------------------------+-----------+
| host                                        | user      |
+---------------------------------------------+-----------+
| %                                           | myuser    |
| 127.0.0.1                                   | root      |
| ::1                                         | root      |
| ip-yyz-yy-zz-yyz.us-west-2.compute.internal | root      |
| localhost                                   | root      |
| localhost                                   | myuser    |
+---------------------------------------------+-----------+

【问题讨论】:

请向我们展示您连接到 MySQL 的连接字符串。这并不一定与您当前的安全规则很重要,但您是尝试从外部还是从 EC2 节点访问数据库? 添加了来自服务器本身和外部网络的连接字符串 您能否尝试在用于从外部 AWS 连接的连接字符串中指定端口 3306(目前它没有列出端口)? 做到了。 mysql -u myuser -pmypwd -h yyz.yyz.yyz.yyz -P 3306 -D myschema。没用 :-/ 但不错的尝试! 好的,下一个问题。您确定用户名和密码正确吗?您还确定您列出的主机是正确的吗? 【参考方案1】:

EC2 实例有两个 IP 地址,内部和外部。

在我看来,您的用户表授权来自内部 IP 地址的访问。

ip-yyz-yy-zz-yyz.us-west-2.compute.internal | root 

您是否尝试从 AWS 外部连接到内部地址?那行不通™。

如果您尝试连接到外部地址,则必须将其添加到您的用户列表中。

对于故障排除而非生产,您可以添加* | root 用户。

您也可以通过浏览器尝试https://xyz.xyz.xyz.xyz:3306。它不会连接,但如果超时,您就会知道您的机器没有到该地址的路由。如果它产生某种乱码,你马上就知道 MySQL 端口是可见的。

【讨论】:

感谢您的详尽回复。实际上,我正在尝试与 myuser 用户连接,该用户应该为任何 IP 启用。 “|%|myuser|”中的 % 符号不是吗?就是这个意思? 另外,我的服务器上有一个正在运行的网络服务。如果我 ping 主机,比如 myhost.mydomain.com,我会得到 xyz.xyz.xyz.xyz IP。我应该在任何地方专门添加该 IP 吗?【参考方案2】:

好消息和坏消息。

好消息:我解决了这个问题! 坏消息:我们都是对的。在安全组中打开 3306 端口就足够了。问题是 - 由于我不知道的原因 - 我一直看到错误的安全组。我注销,再次登录并看到正确的。在那里启用了端口 3306 并且 - 神奇 - 它起作用了!

感谢所有花时间帮助我解决此问题的人!

【讨论】:

Marco,当有人给你答案时,你不要发布自己的答案并选择它。 O. Jones 用他的答案的最后一段和他的答案中的 cmets 帮助你解决了你的问题。他应该得到支票和赏金。 对于它的价值,我不在乎积分。什么是重要的?问题解决了,解释清楚,可以帮助下一个人。 我真的很感谢 O. Jones 的回答,但是 - 正如我在他的回答下面的评论中解释的那样 - 我试图做一些不同的事情,不需要添加 *|root 用户或授权内部/外部 IP。 Tim Biegeleisen 的回复也很有用,但并没有带我去任何我没有去过的地方。因为我通过重新做我已经做过的事情解决了这个问题,但是在注销/登录之后,我认为正确的做法是说“向所有人致敬,但主要是对我自己!”并写下答案。我仍然感谢 O. Jones 和 Tim 在这个问题上花费的时间,我真的很感谢。

以上是关于Amazon EC2 - 无法远程连接到 MariaDB的主要内容,如果未能解决你的问题,请参考以下文章

连接到amazon ec2上的远程postgresql服务器

连接到 Amazon EC2 实例时 SSH 挂起

Mysql 无法通过 Amazon EC2 上的套接字连接到本地服务器

使用 Filezilla SFTP 连接到 Amazon EC2 - 网络错误:连接被拒绝

如何从我的 Amazon EC2 实例中连接到 Amazon Redshift 集群

使用MySQL Workbench连接到Amazon Aurora时出错