从EC2上的不同实例访问mysql DB

时间:2013-03-12 13:14:30

标签: mysql amazon-ec2

我在EC2服务器中有2个实例,一个实例有mysql DB,内容存储在其中,另一个实例用于访问第一个实例中存储的数据。

我需要创建一个存储在数据库中的只读访问权限的用户。

所以

  1. CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

    grant select on DBname.* to 'chowzter'@'localhost';

  2. 错误

    ERROR 1130 (HY000): Host 'ip-xx-xx-xxx-xxx.ec2.internal' is not allowed to connect to this MySQL server
    

    2。 CREATE USER 'username'@'ec2-xx-xx-xx-xxx.compute-1.amazonaws.com' IDENTIFIED BY 'password'

    grant select on DBname.* to 'username'@'ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com';

    这次使用的ip地址是命令获得的second instance的内部IP。

    ip a

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
    valid_lft forever preferred_lft forever
    
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 12:31:41:02:58:47 brd ff:ff:ff:ff:ff:ff
    inet **XX.XX.XX.XXX/23** brd YY.YYY.YY.YYY scope global eth0
    inet6 fe80::1031:41ff:fe02:5847/64 scope link 
    valid_lft forever preferred_lft forever
    

    ip address:“XX.XXX.XX.XXX/23”

    命令:mysql -hxx.xx.xxx.xxx -uusername -ppassword

    错误

    ERROR 1045 (28000): Access denied for user 'username'@'ip-xx-xx-xxx-xxx.ec2.internal' (using password: YES)
    

    任何想法如何解决?

3 个答案:

答案 0 :(得分:1)

您应该为任何主机设置您的授权。但是通过向安全组授予权限来控制访问权限。如果实例停止/重新启动,内部IP可能会发生变化。

答案 1 :(得分:1)

终于解决了它。

首先,我使用%创建了一个用户。

 CREATE USER 'name'@'%' IDENTIFIED BY 'password';

然后您可以为该用户授予权限。

grant select on DBname.* to 'name'@'%';

mysql -h xx.xx.xxx.xxx -u user -p

这使我有权从第二个实例以只读模式访问数据库..

答案 2 :(得分:1)

要从其他实例连接到mysql实例,您应该执行以下操作:

GRANT SELECT ON DBname.* TO 'chowzter'@'xx.xx.xxx.xx' IDENTIFIED BY 'mypassword';
FLUSH PRIVILEGES;

示例:

GRANT SELECT ON facebook.* TO 'zuckerberg'@'10.0.0.420' IDENTIFIED BY 'mysecuredpassword';
FLUSH PRIVILEGES;

您可以通过MySql文档更好地进行此操作: http://dev.mysql.com/doc/refman/5.1/en/grant.html

假设防火墙允许在VPC内访问并且您没有启用绑定地址,那么这应该非常有效。