Eu tenho uma máquina virtual do Azure que hospeda um sistema Ubuntu, com o servidor MySQL e desejo acessar o banco de dados a partir de um aplicativo da Web.
Quando eu instalei o mysql-server, eu executei
$ iptables -I INPUT -p tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
$ iptables -I OUTPUT -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT
para permitir conexões tcp.
No arquivo /etc/mysql/my.cnf
, adicionei bind-address = 168.63.178.87
, que é o "Endereço IP virtual" que o painel do Azure informa.
No mysql, o usuário que eu estou usando para conectar tem todos os privilégios no banco de dados necessários (eu acho):
mysql> SHOW GRANTS FOR 'user'@'%';
+-------------------------------------------------------------------------------------------------------------------+
| Grants for user@% |
+-------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY PASSWORD 'pass_ommited' |
| GRANT ALL PRIVILEGES ON 'database'.* TO 'user'@'%' |
+-------------------------------------------------------------------------------------------------------------------+
Mas quando o aplicativo tenta se conectar ao banco de dados, recebo o erro:
CDbConnection failed to open the DB connection: SQLSTATE[HY000] [2003] Can't connect to MySQL server on '168.63.178.87' (4)
(É uma aplicação de framework do Yii, no caso de ser importante).
Eu tenho acesso SSH completo à máquina virtual, usando o endereço IP fornecido e uma porta específica.
O Azure também me informa o "endereço IP interno", que é 10.78.28.85
.
Eu tentei vincular o servidor MySQL a esse endereço e a 0.0.0.0
, mas nenhum funcionou.
Suspeito que o problema é o redirecionamento feito para acessar minha instância específica no servidor, mas não sei como resolvê-lo.