Назад | Перейти на главную страницу

Удаленный доступ к MySQL не работает - порт закрыт?

Я не могу установить удаленное соединение с MySQL. Со своего компьютера я могу подключиться по telnet к 3306 на существующем сервере, но когда я пробую то же самое с новым сервером, он зависает на несколько минут, а затем возвращается

# mysql -utest3 -h [server ip] -p
Enter password:
ERROR 2003 (HY000): Can't connect to MySQL server on '[server ip]' (110)

Вот некоторые выходные данные сервера.

# nmap -sT -O localhost -p 3306
...
PORT     STATE  SERVICE
3306/tcp closed mysql
...


# netstat -anp | grep mysql
tcp        0      0 [server ip]:3306        0.0.0.0:*                   LISTEN      6349/mysqld
unix  2      [ ACC ]     STREAM     LISTENING     12286  6349/mysqld         /DATA/mysql/mysql.sock

# netstat -anp | grep 3306
tcp        0      0 [server ip]:3306    0.0.0.0:*        LISTEN      6349/mysqld
unix  3      [ ]         STREAM     CONNECTED     3306   1411/audispd

# lsof -i TCP:3306
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  6349 mysql   10u  IPv4  12285      0t0  TCP [domain]:mysql (LISTEN)

Я бегаю...

ОС CentOS версии 5.8 (Final) mysql 5.5.28 (Remi)

Примечание: внутренние подключения к mysql работают нормально.

Я отключил IPtables, в коробке нет другого брандмауэра, он запускает Apache на порту 80 и ssh без проблем.

Последовал этому руководству - http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html

Я привязал IP-адрес в my.cnf

user=mysql
bind-address = [sever ip]
port=3306

Я даже начал с удаления папки mysql в моем хранилище данных и запуска

mysql_install_db --datadir=/DATA/mysql --force

Затем воссоздал всех пользователей в соответствии с руководством ...

http://dev.mysql.com/doc/refman/5.5/en/adding-users.html

Я создал одного тестового пользователя

CREATE USER 'test'@'%' IDENTIFIED BY '[password]';
GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Итак, все, что я вижу, это то, что порт на самом деле не открыт. Где еще мне посмотреть?

Спасибо

# nmap -sT -O localhost -p 3306
...
PORT     STATE  SERVICE
3306/tcp closed mysql
...

В приведенной выше команде вы закрываете порт, потому что ваш mysql работает на определенном IP-адресе, а не на localhost. Итак, когда вы запустите эту команду на сервере, она покажет, что порт закрыт. Так что в этом есть смысл. Если вы хотите, чтобы это работало, вам нужно заменить bind-ip значением 0.0.0.0.

Итак, не могли бы вы заменить localhost на server-ip и опубликовать вывод здесь.

Кроме того, я знаю, что вы отключили брандмауэр, но все же, будет здорово, если вы сможете помочь мне с помощью этих двух команд:

iptables -L -n

кот /etc/hosts.deny

Кроме того, выполняли ли вы какие-либо оптимизации в mysql и изменяли ли значения для любых переменных. Если да, то опубликуйте то же самое.