Я всегда использовал 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). Таким образом, аутентификация выполняется против этого пользователя.
Большинство из нас справляется с этим, устанавливая одинаковый пароль для всех трех строк.