Eu tenho 2 servidores com servidores digitalocean - web (nginx) e database (mysql) - e não consigo conexão da web para o servidor mysql.
Pelo que eu li em outras postagens SO sobre o tópico, o erro que estou recebendo é 'bom' pois mostra que o mysql está tentando autenticar a conexão, e o problema é muito provavelmente relacionado ao usuário mysql , em particular a opção de hospedagem ou concessão relacionada.
Aqui está o mysql.user:
mysql> SELECT User,Host FROM mysql.user;
+-------+--------------+------------+
| User | Host | Grant_priv |
+-------+--------------+------------+
| root | localhost | Y |
| root | dev-db01 | Y |
| root | 127.0.0.1 | Y |
| root | ::1 | Y |
| | localhost | N |
| | dev-db01 | N |
| admin | % | N |
| admin | localhost | N |
| admin | xx.xxx.x.xxx | N |
+-------+--------------+------------+
Alguns tutoriais afirmam que o usuário remoto precisa apenas do host remoto inserido, outros o caractere curinga '%' e outros '%' e localhost. Eu prefiro não usar um host curinga, mas apenas o IP interno do servidor web xx.xxx.x.xxx. Como você pode ver acima, eu tentei todos os três, e antes disso, eu tentei cada um separadamente.
Eu também concedeu privilégios de root do usuário administrador com:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'xx.xxx.x.xxx' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
Não sei exatamente o que a coluna Grant_priv deve significar, em particular o No contra o usuário admin - isso significa 'WITH GRANT OPTION' não funcionou? Mesmo assim, eu não esperaria que isso impedisse o usuário de se autenticar.
Eu ainda não configurei um firewall, então posso fazer telnet do servidor web para o servidor mysql e conectar antes de ser rejeitado:
telnet xx.xxx.x.xx 3306
Trying xx.xxx.x.xx...
Connected to xx.xxx.x.xx.
Escape character is '^]'.
EHost 'xx.xxx.x.xx' is not allowed to connect to this MySQL serverConnection closed by foreign host.
Meu objetivo é criar um banco de dados através da conexão remota do servidor web para o servidor mysql usando doutrina como parte de um aplicativo symfony. Aqui está a parte relevante do app / config / parameters.yml se for útil:
sudo vi app/config/parameters.yml
parameters:
database_driver: pdo_mysql
database_host: xx.xxx.x.xx
database_port: 3306
database_name: appdatabasename
database_user: admin
database_password: ~
Como você pode ver, deixei a senha vazia (~ é interpretada como vazia), mas também tentei com uma senha (ao atualizar o usuário admin no mysql com a mesma senha).
Detalhes da configuração:
- VPS: DigitalOcean
- Servidor MySQL Ver: 5.7
- SO: FreeBSD 10.1
Estou muito confuso. Alguma idéia?
Obrigado!