Acessar o mysql DB de uma instância diferente no EC2

1

Eu tenho 2 instâncias no servidor EC2, uma instância tem o banco de dados mysql e o conteúdo armazenado nela e outra instância para acessar os dados armazenados na primeira instância.

Eu preciso criar um usuário com acesso somente leitura armazenado no banco de dados.

Então

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

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

ERRO

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';

Desta vez, o endereço IP usado foi o IP interno do second instance obtido pelo comando.

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

endereço IP: "XX.XXX.XX.XXX/23"

Comando

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

ERRO

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

Alguma ideia de como resolver isso?

    
por Shrujan Shetty 12.03.2013 / 12:03

3 respostas

0

Finalmente resolvido.

Primeiro, criei um usuário usando % .

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

Então você pode dar privilégios a esse usuário.

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

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

Aqui, o endereço IP é da primeira instância

Isso me dá o privilégio de acessar o banco de dados no modo somente leitura de segunda instância.

    
por 14.03.2013 / 13:13
1

Você também precisa verificar o grupo de segurança da primeira instância. Você pode ssh na primeira instância da segunda instância?

A porta do MySQL está aberta na sua configuração do grupo de segurança?

E por que você não usa o serviço empacotado RDS (MySQL)?

    
por 13.03.2013 / 05:45
0

Usando os seguintes nomes fictícios:

fonte MySQL = ec2-source.compute-1.amazonaws.com , ip-source.ec2.internal
MySQL externo que deseja acesso = ec2-external.compute-1.amazonaws.com , ip-external.ec2.internal

Para criar um usuário que possa acessar a fonte externa com permissões somente leitura, enquanto limita o acesso ao IP de sua máquina externa, execute isto em sua fonte MySQL:

CREATE USER 'username'@'ip-external.ec2.internal' IDENTIFIED BY 'password'; e GRANT SELECT ON DBname.* TO 'username'@'ip-external.ec2.internal'; e FLUSH PRIVILEGES;

Agora você pode usar o seguinte na máquina externa para acessar a fonte de somente leitura DB:

mysql -u username -p -h ec2-source.compute-1.amazonaws.com

    
por 27.06.2016 / 19:59

Tags