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