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

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

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

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

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

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

Настройки Navicat такие же, как и раньше:

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

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

Я не уверен, почему он работает через SSH, когда я делаю это вручную, но не когда это делает Navicat, хотя, по-видимому, он делает в основном то же самое. Что за '::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 с хозяином localhost используется только при подключении через разъем UNIX. Остальные пользователи используются при подключении через сокет TCP, через IPv4 или IPv6 соответственно.

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

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