Para responder à sua pergunta: não, não é seguro.
Apenas para nomear alguns problemas de segurança:
1: Login
Seus dados de login são transferidos via texto simples pela internet que você NÃO quer que, obviamente:)
2: consultas SQL
Suas consultas que você envia (e suas respostas) são enviadas em texto simples novamente, você NÃO quer que alguém possa facilmente adulterar esses dados.
Além disso, ter os resultados da consulta em texto simples, que podem conter informações confidenciais, é um outro problema. No caso de arquivos pessoais, você pode até ser processado em alguns países por negligenciar / ignorar as diretrizes de segurança para dados pessoais.
3: A porta SQL aberta na Internet é sempre um vetor de ataque extra para um usuário mal-intencionado em potencial. Pense em exploits remotos do servidor mysql, etc.
Se você realmente precisa de uma conexão remota, use SSL.
Eu sumarizei as etapas que você precisa seguir, supondo que você executa um servidor mysql no linux:
No servidor mysql, gere um certificado ssl do mysql:
Gere o CA com chave privada:
openssl genrsa 4096 > ca-key.pem
Gere o certificado usando a chave criada anteriormente (responda às perguntas padrão):
openssl req -sha256 -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem
Em seguida, crie uma nova chave privada para o servidor mysql (novamente, perguntas padrão):
openssl req -sha256 -newkey rsa:4096 -days 730 -nodes -keyout server-key.pem > server-req.pem
Exportar chave privada:
openssl rsa -in server-key.pem -out server-key.pem
Criar certificado do servidor:
openssl x509 -sha256 -req -in server-req.pem -days 730 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
Agora, no seu my.cnf (localizado em /etc/mysql/my.cnf), edite a seção mysqld e adicione o seguinte:
ssl-ca = / etc / mysql / ca-cert.pem
ssl-cert = / etc / mysql / server-cert.pem
chave-ssl = / etc / mysql / server-key.pem
reinicie seu serviço mysql:
service mysql restart
Agora você tem seu servidor mysql rodando com certificados de servidor, em seguida iremos adicionar um usuário de um endereço específico (seu ip estático remoto se possível) assim no seu console mysql execute o seguinte:
GRANT ALL PRIVILEGES ON 'database'.* TO 'yourremotelogin'@'your.remote.ip.xxx' IDENTIFIED BY 'password' REQUIRE SSL;
FLUSH PRIVILEGES;
Ok, agora temos um servidor mysql SSL que aceita conexões remotas via SSL a partir do seu ip particular, mas ainda precisamos gerar certificados de clientes:
Então, ainda no servidor mysql, execute o seguinte:
openssl req -sha256 -newkey rsa:4096 -days 730 -nodes -keyout client-key.pem > client-req.pem
openssl rsa -in client-key.pem -out client-key.pem
openssl x509 -sha256 -req -in client-req.pem -days 730 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem
Agora copie o ca-cert.pem, o client-key.pem e o client-cert.pem para o seu pc remoto, onde seu ambiente de trabalho mysql está situado.
No mysql workbench, abra o gerenciamento de conexões do servidor e edite sua conexão existente em seu servidor. Na aba "conenction", selecione a sub-aba SSL e selecione "use SSL require".
Nos campos abaixo, selecione ca-cert.pem para seu arquivo CA SSL, cielnt-cert.pem para o arquivo SSL CERT e client-key.pem para o arquivo-chave SSL.
Agora, se você tentar se conectar, ainda será solicitada uma senha (que você definiu anteriormente), mas será sobre SSL:)
Espero que esta resposta seja a resposta que você estava procurando.