Почему я не могу подключиться к MariaDB с помощью Navicat через SSH-туннель?

Почему я не могу подключиться к MariaDB с помощью Navicat через SSH-туннель?

Я всегда использовал Navicat в Windows для управления экземплярами MySQL/Percona.

Несколько дней назад я купил новый сервер и установил MariaDB 10.3.9.

Я могу нормально подключиться к нему, когда нахожусь в сеансе Putty, подключаюсь по SSH к коробке. mysql -u root -pВсе отлично работает.

Но по какой-то причине Navicat выдает ошибкуaccess denied for user 'root'@'::1' (using password: YES)

Настройки Navicat те же, что я всегда использовал раньше:

Имя хоста: localhost Порт: 3306 Имя пользователя Mysql: root Пароль Mysql: [пароль root в mysql]

Использовать SSH-туннель: да IP-адрес: [IP моего сервера] Имя пользователя SSH: [мое имя] Пароль SSH: [мой пароль SSH]

Я не уверен, почему это работает через SSH, когда я делаю это вручную, но не работает, когда это делает Navicat, хотя он, по-видимому, делает в основном то же самое. В чем тут дело '::1', это указывает на проблему?

Спасибо!

решение1

На самом деле естьтринемного отличающиеся пользователи root в MySQL. (Что действительно неприятно, но так было всегда и, вероятно, не изменится...)

MariaDB [(none)]> select Host, User from mysql.user where User = 'root';
+-----------+------+
| Host      | User |
+-----------+------+
| 127.0.0.1 | root |
| ::1       | root |
| localhost | root |
+-----------+------+
3 rows in set (0.06 sec)

Пользователь rootс host localhostиспользуется только при подключении через сокет UNIX. Остальные пользователи используются при подключении через сокет TCP, через IPv4 или IPv6 соответственно.

Когда вы делаете переадресацию порта ssh с помощью Navicat, используется сокет TCP, а именно сокет TCP IPv6 (поскольку IPv6 предпочтительнее IPv4). Таким образом, именно этот пользователь проходит аутентификацию.

Большинство из нас решает эту проблему, устанавливая одинаковый пароль для всех трех строк.

Связанный контент