O Mysql não está aceitando conexões remotas

1

Configurei o MySQL no meu servidor CentOS 6.5 de 64 bits e configurei-o para aceitar conexões remotas de qualquer IP.

Ao tentar se conectar através do HeidiSQL, ele mostra este erro:

SQL Error (2003): Can't connect to MySQL server on 'ip' (10060)

Aqui está minha configuração:

/etc/my.conf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
bind-address=SERVERIP
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Usuários do MySQL:

mysql> SELECT User, Host, Password FROM mysql.user;
+--------+--------------------+-------------------------------------------+
| User   | Host               | Password                                  |
+--------+--------------------+-------------------------------------------+
| root   | localhost          | *|
| root   | nl.-----------.net | *|
| root   | 127.0.0.1          | *|
| radius | localhost          | *|
| radius | %                  | *|
| root   | %                  | *|
+--------+--------------------+-------------------------------------------+

iptables:

[root@nl ~]# iptables-save
# Generated by iptables-save v1.4.7 on Sat Aug  2 08:39:22 2014
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [2269:299675]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Sat Aug  2 08:39:22 2014

Configuração do SELinux:

SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

Meu anfitrião disse que nenhum porto está bloqueado em sua extremidade. Eu desativei meu firewall no meu PC e ele ainda me deu o mesmo erro. O MySQL está sendo executado no servidor.

Obrigado antecipadamente

    
por Niell 02.08.2014 / 14:40

1 resposta

0

Este é provavelmente o seu problema:

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

A ordenação de regras está errada. As regras do iptables são avaliadas "de cima para baixo" e a primeira regra que corresponde (com pouquíssimas exceções) é a final. Você tem uma regra REJECT que precede a regra ACCEPT , portanto, a regra REJECT tem precedência e a conexão é recusada.

Inverte a ordem dessas duas regras no seu conjunto de regras e você provavelmente descobrirá que o erro desaparece.

Eu também sugiro que você não permita logins remotos usando a conta root do MySQL, como você parece estar fazendo com base no conteúdo da tabela mysql.user , particularmente desde que você não esteja fazendo nada para limitar onde as conexões da Internet são permitidas. Em vez disso, use uma conta dedicada e conceda as permissões necessárias para os bancos de dados apropriados e considere a possibilidade de aumentar a segurança no nível de IP também.

    
por 02.08.2014 / 14:55

Tags