Mysql через ssh часто не может соединяться или тайм-аут

У меня есть сервер MariaDB (10.0.12) на машине (Ubuntu 14.04), с которой соединяются другие серверы через ssh для цели безопасности.

Туннель ssh открыт через autossh как так:

autossh -M 3306 -f -Ng -L 3306:127.0.0.1:3306 mariaDB@server-ip

К сожалению, я часто заканчиваю с, 'не может соединиться' или 'Потерянное соединение' ошибки:

SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (111)

or

SQLSTATE[HY000] [2013] Lost connection to MySQL server at 'reading authorization packet', system error: 0.

Вот некоторая дополнительная информация, поскольку она могла бы помочь:

MariaDB [(none)]> show global variables like '%timeout';
+-----------------------------+----------+
| Variable_name               | Value    |
+-----------------------------+----------+
| connect_timeout             | 30       |
| delayed_insert_timeout      | 300      |
| innodb_flush_log_at_timeout | 1        |
| innodb_lock_wait_timeout    | 50       |
| innodb_rollback_on_timeout  | OFF      |
| interactive_timeout         | 28800    |
| lock_wait_timeout           | 31536000 |
| net_read_timeout            | 30       |
| net_write_timeout           | 60       |
| slave_net_timeout           | 3600     |
| thread_pool_idle_timeout    | 60       |
| wait_timeout                | 3600     |
+-----------------------------+----------+
12 rows in set (0.00 sec)

Netstat производят при выполнении telnet 172.0.0.1 3306:

netstat -naptu|grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      5249/ssh        
tcp        0      0 127.0.0.1:46701         127.0.0.1:3306          TIME_WAIT   -               
tcp        0      0 127.0.0.1:46712         127.0.0.1:3306          TIME_WAIT   -               
tcp        0      0 127.0.0.1:46702         127.0.0.1:3306          TIME_WAIT   -               
tcp        0      0 127.0.0.1:46647         127.0.0.1:3306          TIME_WAIT   -               
tcp        0      0 127.0.0.1:46704         127.0.0.1:3306          TIME_WAIT   -               
tcp        0      0 127.0.0.1:46705         127.0.0.1:3306          TIME_WAIT   -               
tcp        0      0 127.0.0.1:46703         127.0.0.1:3306          TIME_WAIT   -               
tcp        0      0 127.0.0.1:46709         127.0.0.1:3306          TIME_WAIT   -               
tcp        0      1 37.187.91.194:52674     172.0.0.1:3306          SYN_SENT    5109/telnet     
tcp        0      0 127.0.0.1:46706         127.0.0.1:3306          TIME_WAIT   -               
tcp6       0      0 :::3306                 :::*                    LISTEN      5249/ssh        

Telnet заканчивает тем, что испытал таймаут:

telnet 172.0.0.1 3306
Trying 172.0.0.1...
telnet: Unable to connect to remote host: Connection timed out
1
задан 19 June 2014 в 22:39
1 ответ

Я немного опоздал на вечеринку, но я боролся с этой проблемой большую часть дня: SSH-туннель для MySQL просто не получил ответа, а netstat на удаленном хосте показал SYN_SENT 127.0.0.1 на временном порте на 127.0.0.1:3306 ).[12127 impression Для меня проблема заключалась в том, что iptables был запущен, но не был настроен для разрешения петлевых подключений (примечание: если кто-нибудь знает почему ], это разумное значение по умолчанию, хотелось бы узнать!), и поэтому соединение (пакет SYN) от демона SSH к MySQL разорвано iptables .

Исправление так же просто, как добавить [11561 83] -i lo -j ACCEPT правило в вашей цепочке INPUT перед любыми глобальными правилами DROP . Для меня это было iptables -I INPUT 4 -i lo -j ACCEPT , но это будет зависеть от ваших существующих правил.

Благодарим за помощь в этом ответе: https : //serverfault.com/a/319267

Изменить: Не забудьте после этого сохранить изменения в iptables!

1
ответ дан 4 December 2019 в 00:23

Теги

Похожие вопросы