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

MySQL 8.0.20 через SSH

DBeaver 7.1.0 в Windows 10 пытается подключиться к MySQL 8.0.20 в Ubuntu 20.04 с помощью SSH. Я также пробовал другие клиенты Windows MySQL GUI с идентичными результатами, что наводит меня на мысль, что проблема связана с конфигурацией MySQL (или, может быть, с моей локальной установкой Java?).

Сообщение об ошибке:

Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
  Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.

Информация о версии MySQL:

# mysql --version
mysql  Ver 8.0.20-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))

# mysqld --version
/usr/sbin/mysqld  Ver 8.0.20-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))

Из командной строки Windows я могу подключиться к моему серверу по ssh и без проблем подключиться к базе данных:

FROM WINDOWS COMMAND LINE:
ssh john@erasmus.com

FOLLOWED BY THE FOLLOWING ON THE SERVER:
$ mysql -u admin -p

Это свежая установка MySQL без каких-либо изменений конфигурации. Единственное, что я сделал, - это создал фиктивную базу данных («main») и нового пользователя базы данных («admin») и предоставил пользователю доступ к базе данных.

CREATE DATABASE main;
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'XXX_PASSWORD_REDACTED_XXX';  
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost';  
FLUSH PRIVILEGES;

SELECT user,plugin,host FROM mysql.user WHERE user='admin';
+-------+-----------------------+-----------+
| user  | plugin                | host      |
+-------+-----------------------+-----------+
| admin | caching_sha2_password | localhost |
+-------+-----------------------+-----------+
1 row in set (0.00 sec)

В DBeaver, нажав "Конфигурация тестового туннеля"приводит к успеху, поэтому туннель SSH в порядке. Но нажмите"Тестовое соединение"приводит к ошибке. См. ниже ошибку вместе со снимками экрана моей конфигурации. Обратите внимание, что я пытался использовать"Драйвер MySQL 8+" так же хорошо как "Драйвер MySQL". Я также пробовал использовать оба JSch и SSHJ с тем же результатом. Я также пробовал подключиться, используя 127.0.0.1 вместо того localhost, с тем же результатом. Я также попытался изменить плагин пользователя с caching_sha2_password к mysql_native_password, с тем же результатом.

Адрес привязки MySQL по умолчанию:

# grep -Irs bind /etc/mysql
mysql.conf.d/mysqld.cnf:bind-address            = 127.0.0.1

IPTables выглядит следующим образом:

# iptables -L -v -n
Chain INPUT (policy DROP 328 packets, 18119 bytes)
 pkts bytes target     prot opt in     out     source               destination
11517   76M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
  141 32322 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
   10   492 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
   10   576 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 6069 packets, 647K bytes)
 pkts bytes target     prot opt in     out     source               destination

Буду признателен за любые идеи по дальнейшей отладке!

Скриншоты ниже:

Драйвер DBeaver MySQL 8+ DBeaver SSH Сообщение об ошибке DBeaver

Ух ... неважно ... разобрался. Я забыл разрешить петлевые соединения. Исправлено запуском: sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A OUTPUT -o lo -j ACCEPT