【问题标题】:Web Service can not connect to mySql hosted by Amazon Web ServicesWeb Service 无法连接到 Amazon Web Services 托管的 mySql
【发布时间】:2018-07-29 06:24:28
【问题描述】:

我有一个使用 Visual Studio 2015 开发的 Web 服务。当我通过 WCF 测试客户端从 VS2015 中测试 Web 服务时,我可以选择我想要调用的 Web 服务方法并调用它。然后,Web 服务连接到由 Amazon Web Services 托管的 mySql 数据库。然后 Web 服务返回从我的数据库中读取的数据,我可以在 WCF 中看到数据。当我从命令提示符启动 WCF 测试客户端并手动输入服务时,选择我要调用的服务方法并单击 Invoke,Web 服务已执行但无法连接到 mySql 数据库。我得到的错误消息是无法连接到任何指定的 MySQL 主机。

为什么在VS2015中从WCF调用web服务可以连接到mySql数据库,但是从命令行启动的WCF调用时却不能访问mySQL数据库?

谢谢。

【问题讨论】:

  • 你看亚马逊手册了吗?我相信还涉及将连接 IP 列入白名单的步骤
  • 我不知道有手册。我在哪里可以找到那个?但是ip地址不会一样吗?在这两种情况下,我都是从我的笔记本电脑启动 WCF。一次来自 VS2015,一次来自命令提示符。但两者都在我的笔记本电脑上,所以两者都应该有相同的 IP 地址。对吗?
  • 当我创建数据库时,我选择将数据库公开,以便它可以访问。正如我所说,当我从 VS2015 中执行 WCF 时,我会从中获取数据。只是当我从命令提示符执行 WCF 时不会。
  • @RaymondNijland 我刚刚创建了一个我在本地测试的 web api,它连接到 mySql 数据库并插入数据和检索数据。当我将 api 发布到我的 AWS 账户时,它无法访问 mySql 数据库。 AWS 必须有一些限制,即使当我创建我的数据库时我选择它是公开的。我将不得不联系 AWS 以了解发生了什么。

标签: mysql amazon-web-services web-services


【解决方案1】:

答案是安全相关的。我必须将我的 WebAPI 的公共 IP 地址放入数据库的安全规则中,类似于我必须执行的操作以允许我的本地计算机访问 mySql 数据库。

【讨论】:

    【解决方案2】:

    这可能是一个安全问题。如果它是安全相关的。这是解决方案:

    mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
        ->     WITH GRANT OPTION;
    mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
        ->     WITH GRANT OPTION;
    

    【讨论】:

    • 我不确定这是否可行。我收到的错误消息(无法连接到任何指定的 MySQL 主机)似乎表明 WebAPI 无法连接到数据库,而不是它们无法登录。
    • 你检查服务器是否开启了远程访问?
    • 如果您可以远程访问您的数据库。您还应该为 mysql 定义 localhost 用户授权。
    • 我必须将托管 m WebAPI 的 EC2 实例的 IP 地址添加到数据库的安全规则中。我现在可以调用我的 API。谢谢。
    猜你喜欢
    • 2016-08-31
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    相关资源
    最近更新 更多