為什麼我無法透過 SSH 隧道使用 Navicat 連線到 MariaDB?

為什麼我無法透過 SSH 隧道使用 Navicat 連線到 MariaDB?

我一直在 Windows 上使用 Navicat 來管理我的 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

其實有MySQL 中的 root 使用者略有不同。 (這確實很痛苦,但它永遠都是這樣,可能不會改變......)

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)

僅在使用 UNIX 套接字連線時才使用root具有主機的使用者。localhost當透過 TCP 套接字、分別透過 IPv4 或 IPv6 連線時使用其他使用者。

當您使用 Navicat 進行 ssh 連接埠轉送時,將使用 TCP 套接字,特別是 IPv6 TCP 套接字(因為 IPv6 優於 IPv4)。因此該用戶就是進行身份驗證的用戶。

我們大多數人透過確保所有三行的密碼設定相同來處理此問題。

相關內容