【问题标题】:Connecting remotely to mysql running in Amazon EC2 instance远程连接到在 Amazon EC2 实例中运行的 mysql
【发布时间】:2014-01-06 16:43:48
【问题描述】:

我在 Amazon EC2 上创建了一个 Windows Server 2012 实例。我已经安装了 MySQL 并设置了一个用于测试的数据库,并且我创建了一个具有所有权限的用户。我不想从另一台 Windows 机器远程连接到这个数据库,但连接不起作用。我打开了端口 3306 并允许所有流量(再次只是为了测试)。我可以很好地 ping 服务器,但是当我尝试使用命令提示符连接时:

MySQL Server/bin>mysql -h "IP address for my instance" -u User -p"password"

我得到错误:

ERROR 2003 (HY000): Can't connect to MySQL server on "host" (10060)

我不知道是什么原因造成的。我错过了什么吗?

编辑

我使用此命令创建了另一个具有特权的用户:

mysql>CREATE USER 'testUser'@'%' IDENTIFIED BY 'somepass';
mysql>GRANT ALL PRIVILEGES ON *.* TO 'testUser'@'%' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;

【问题讨论】:

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


    【解决方案1】:

    错误10060表示不允许远程连接。

    如果您创建了用户yourName@localhost,它将无法正常工作。尝试使用通配符主机创建用户 % : yourName@%

    【讨论】:

    【解决方案2】:

    尝试从您的 my.ini 中注释掉以下行。在 Windows 上,您可以在 MySQL 安装目录中找到它,通常类似于“C:\Program Files\MySQL\MySQL Server 5.5\”

    bind-address = 127.0.0.1
    

    基本上这告诉 mysql 只监听来自 127.0.0.1 的请求。这是出于安全原因的默认设置。你也可以这样做

    bind-address = <ip address of one of your network interfaces>
    

    这实际上只会监听该特定网络接口上的请求。

    如果您注释掉 bind-address 选项,您可能需要相应地配置您的 AWS 安全组以防止未经授权的访问。

    【讨论】:

    • 我已尝试查找此文件,但我无法在任何地方找到它,如果有影响,我正在运行 MySQL 5.6
    • 在 Windows 上,文件是 my.ini 而不是 my.cnf
    • 对为什么这是必要的一些解释会很好 - 即解释默认情况下(出于安全原因),mysql 只侦听来自 localhost 的连接。
    猜你喜欢
    • 1970-01-01
    • 2014-05-22
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    相关资源
    最近更新 更多