Se for MySQL, a rede do servidor de banco de dados não está habilitada por padrão. Para habilitar a rede no MySQL, você precisa encontrar o arquivo de configuração ativo do MySQL chamado
my.cnf
. E editá-lo. Vou explicar como fazer isso no Ubuntu 12.04, mas as instruções são semelhantes para a maioria das instalações do Linux.
Ativar rede MySQL
Primeiro, abra o arquivo usando um editor como
nano
. Você pode precisar executar o comando via sudo
:sudo nano /etc/mysql/my.cnf
Em seguida, procure a área em seu arquivo de configuração com o
bind-address
opção:# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
Agora altere esse
bind-address
configuração para o seguinte:bind-address = 0.0.0.0
Com isso feito salve o arquivo e reinicie o MySQL assim:
sudo service mysql restart
E agora seu banco de dados MySQL poderá receber conexões não locais de máquinas remotas.
Certifique-se de que a porta MySQL
3306
está aberto Dito isso, mesmo com a rede habilitada, você ainda deve verificar se consegue se conectar à máquina remota a partir da linha de comando usando uma ferramenta de rede como
nmap
. Você pode ter um firewall em 192.168.1.10
bloqueando a porta MySQL 3306
então você precisa verificar se está aberto ou fechado assim:nmap 192.168.1.10 -p3306
E se a porta
3306
estiver aberto, esta será a resposta; observe o open
em STATE
:Starting Nmap 6.40 ( http://nmap.org ) at 2014-06-10 10:34 EDT
Nmap scan report for 192.168.1.10
Host is up (0.0035s latency).
PORT STATE SERVICE
3306/tcp open mysql
Mas se a porta
3306
estiver fechado, você receberá isso; observe o closed
em STATE
:Starting Nmap 6.40 ( http://nmap.org ) at 2014-06-10 10:34 EDT
Nmap scan report for 192.168.1.10
Host is up (0.0035s latency).
PORT STATE SERVICE
3306/tcp closed mysql
Verifique suas concessões de usuário do MySQL
Agora com tudo isso feito, seu servidor de banco de dados MySQL deve estar acessível na rede. Mas dito isso, você precisa ter certeza de que o usuário do banco de dados que você está usando tem permissão para se conectar a partir de uma máquina remota em sua LAN. Portanto, faça login no MySQL e execute este comando para ver quais concessões o usuário pode ter:
SELECT user, host FROM `mysql`.`user`;
Isso mostrará uma lista de usuários e hosts conectados a esses usuários no MySQL. O problema é que a maioria dos usuários só recebe privilégios de acesso ao
localhost
ou 127.0.0.1
. Alguns recebem o host curinga de %
. Você precisa olhar para essa lista e ver se o usuário que deseja usar tem um host curinga (%
) ou um endereço IP específico conectado a eles. Você pode verificar o GRANT
de um usuário s executando uma linha como esta; é claro, altere [your_database_user]
e [hostname]
para corresponder às suas configurações:SHOW GRANTS FOR '[your_database_user]'@'[hostname]';
Isso deve mostrar uma lista de
GRANT
disponíveis s para um usuário em um host específico. Se eles tiverem GRANT
s que permitiriam acesso remoto, como usar o curinga %
host—então está tudo pronto. Se eles não tiverem nenhum GRANT
s você pode executar os seguintes comandos do MySQL; é claro, altere [your_database]
e [your_database_user]
para corresponder às suas configurações:GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `[your_database]`.* TO '[your_database_user]'@'192.168.0.0/255.255.0.0';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `[your_database]`.* TO '[your_database_user]'@'10.0.0.0/255.0.0.0';
FLUSH PRIVILEGES;
Ambos
GRANT
linhas aplicam um conjunto bastante padrão de direitos de acesso a um banco de dados. A primeira linha os aplica a qualquer conexão na faixa de rede LAN de 192.168.x.x
. A segunda linha os aplica a qualquer conexão na faixa de rede LAN de 10.x.x.x
. Eu gosto de fazer isso para cobrir todas as bases em redes internas. Os últimos FLUSH PRIVILEGES;
linha basicamente diz ao MySQL para recarregar as tabelas de privilégios de usuário que permitem que essas concessões tenham efeito.