Por algum motivo, não consigo me conectar remotamente ao meu servidor MySQL. Já tentei de tudo e ainda estou recebendo erros.
root@server1:/home/administrator# mysql -u monty -p -h www.ganganadores.cl
Enter password:
ERROR 1045 (28000): Access denied for user 'monty'@'server1.ganganadores.cl' (using password: YES)
Agora, eu tentei correr
GRANT ALL ON *.* to monty@localhost IDENTIFIED BY 'XXXXX';
GRANT ALL ON *.* to monty@'%' IDENTIFIED BY 'XXXXXX';`
e ainda nada! O que estou fazendo de errado?
EDIT : my.cnf
comentou o ip do bind.
Respostas:
Para expor o MySQL a qualquer coisa que não seja localhost você terá que ter a seguinte linha
Para mysql versão 5.6 e inferior
descomentado
/etc/mysql/my.cnf
e atribuído ao endereço IP do seu computador e não loopbackPara mysql versão 5.7 e superior
descomentado
/etc/mysql/mysql.conf.d/mysqld.cnf
e atribuído ao endereço IP do seu computador e não loopbackOu adicione um
bind-address = 0.0.0.0
se não quiser especificar o IPEm seguida, pare e reinicie o MySQL com a nova entrada my.cnf. Depois de executar, vá para o terminal e digite o seguinte comando.
Isso deve retornar algo assim com o seu IP real no xxx's
Se a instrução acima retornar corretamente, você poderá aceitar usuários remotos. No entanto, para um usuário remoto se conectar com os privilégios corretos, você precisa ter esse usuário criado em localhost e em '%'.
então,
e finalmente,
Se você não tiver o mesmo usuário criado como acima, ao fazer logon localmente, você pode herdar os privilégios de localhost base e ter problemas de acesso. Se você quiser restringir o acesso que meu usuário tem, então você precisa ler a sintaxe da instrução GRANT AQUI. Se você passou por tudo isso e ainda tem problemas, poste alguma saída de erro adicional e as linhas apropriadas de my.cnf.
NOTA: Se lsof não retornar ou não for encontrado, você pode instalá-lo AQUI com base em sua distribuição Linux. Você não precisa do lsof para fazer as coisas funcionarem, mas é extremamente útil quando as coisas não estão funcionando como esperado.
fonte
lsof -i -P | grep :3306
, isso não funcionou, mas a conexão remota ainda funciona bem sem essa confirmação, desconsidere se você não vir a saída adequada.sudo lsof -i -P
será muito mais útil do quelsof -i -P
(assumindo que você esteja logado como um usuário sem privilégios).lsof -i -P | grep :3306
não retorna nada!Adicione alguns pontos ao excelente post da apesa:
1) Você pode usar o comando abaixo para verificar o endereço IP do servidor mysql está escutando
2) Use
FLUSH PRIVILEGES
para forçar o carregamento das tabelas de concessão se, por algum motivo, as alterações não tiverem efeito imediato3) Se o firewall netfilter estiver habilitado (
sudo ufw enable
) na máquina do servidor mysql, faça o seguinte para abrir a porta 3306 para acesso remoto:verificar o status usando
4) Uma vez que uma conexão remota é estabelecida, ela pode ser verificada em qualquer máquina cliente ou servidor usando comandos
fonte
sudo ufw status
!!netstat -nlt | grep 3306
retorna vazioO MySQL escuta apenas o localhost, se quisermos habilitar o acesso remoto a ele, precisamos fazer algumas alterações no arquivo my.cnf:
Precisamos comentar as linhas bind-address e skip-external-locking:
Depois de fazer essas alterações, precisamos reiniciar o serviço mysql:
fonte
skip-external-locking
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Se estiver testando no Windows, não se esqueça de abrir a porta 3306.
fonte
Você está usando o Ubuntu 12 (bastante antigo)
Primeiro, abra o arquivo /etc/mysql/mysql.conf.d/mysqld.cnf ( /etc/mysql/my.cnf no Ubuntu 14.04 e versões anteriores
No [mysqld] Localize a linha, bind-address = 127.0.0.1 E mude para, bind-address = 0.0.0.0 ou comente-o
Em seguida, reinicie o Ubuntu MysQL Server
systemctl restart mysql.service
Agora o Ubuntu Server permitirá acesso remoto ao MySQL Server, mas ainda assim você precisa configurar os usuários do MySQL para permitir o acesso de qualquer host.
O usuário deve estar
'username'@'%'
com todas as concessões necessáriasPara ter certeza de que o servidor MySQL escuta em todas as interfaces, execute o comando netstat da seguinte maneira.
netstat -tulnp | grep mysql
Espero que funcione!
fonte