SSH 터널을 통해 Navicat으로 MariaDB에 연결할 수 없는 이유는 무엇입니까?

SSH 터널을 통해 Navicat으로 MariaDB에 연결할 수 없는 이유는 무엇입니까?

저는 항상 Windows에서 Navicat을 사용하여 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 비밀번호: [root의 mysql 비밀번호]

SSH 터널 사용: 예 IP 주소: [내 서버의 IP] SSH 사용자 이름: [내 이름] SSH 비밀번호: [내 SSH 비밀번호]

수동으로 수행할 때 SSH를 통해 작동하는 이유가 확실하지 않지만 Navicat에서 수행할 때는 작동하지 않습니다. 아마도 대체로 동일한 작업을 수행하더라도 마찬가지입니다. 그게 무슨 '::1'문제인가요? 그게 문제를 가리키는 것인가요?

감사해요!

답변1

실제로는 있습니다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호스트가 있는 사용자는 localhostUNIX 소켓을 사용하여 연결할 때만 사용됩니다. 다른 사용자는 각각 IPv4 또는 IPv6를 통해 TCP 소켓을 통해 연결할 때 사용됩니다.

Navicat으로 SSH 포트 포워딩을 할 때, TCP 소켓이 사용되며, 특히 IPv6 TCP 소켓이 사용됩니다(IPv4보다 IPv6가 선호되기 때문입니다). 따라서 해당 사용자가 인증 대상입니다.

우리 중 대부분은 세 행 모두에 대해 비밀번호가 동일하게 설정되어 있는지 확인하여 이 문제를 처리합니다.

관련 정보