【发布时间】:2019-01-18 07:10:22
【问题描述】:
我已经在我的 EC2 上安装了 LAMP,运行 mariaDB。 所以现在我想连接到 mySQL,但是我的 $servername 在 .php 文件中应该是什么(我存储 db_connect 详细信息的位置)?
我已经尝试了 EC2 仪表板上提供的实例的公共 DNS (IPv4) 地址,但是,当我运行 .php 文件时出现连接失败错误。 我在这里使用了正确的服务器名称吗?
还是因为我需要设置一些关于安全组的访问权限?我已将端口 3306,tcp,0.0.0.0/0 添加到安全组,但仍然收到“连接失败:用户 'root'@..... 的访问被拒绝”
我还检查了 my.cnf,我认为它不应该有任何绑定地址值?
【问题讨论】:
-
这似乎是凭据问题,端口监听似乎工作正常。 php文件是否在同一个盒子上运行?如果是这样,您是否尝试过使用“localhost”?
-
同意 - 如果您从 ec2 中的服务器收到“连接被拒绝”或访问被拒绝消息,这意味着您可以被服务器告知,这意味着安全组已打开.安全组会静默丢弃不允许的流量,因此如果需要打开安全组,症状将是在传输任何数据之前连接挂起。
-
顺便说一句,在公共 IP 上打开 mysql 到 0.0.0.0/0 是一个糟糕的主意。如果您从本地工作站访问 mysql,或者为客户端添加 IP 或安全组,请使用 aws 控制台为该规则选择“我的 IP”。这实际上非常重要,因为即使 mysql 也有身份验证,即使没有成功登录,也很容易 DOS mysql 服务器。
-
@INVOKECloud,哦,你的建议有效!只是想知道,为什么输入整个 DNS 地址不起作用?
-
Mysql root 用户默认支持“localhost”,不支持远程访问。当您使用 IP 时,它将被视为“远程”连接,mysql 拒绝它。除此之外,我建议您遵循@DanFarrell 关于安全组的建议。
标签: mysql amazon-ec2