Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como acessar um webservice de banco de dados MySQL pela LAN?


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.