Mysql

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

  • August 29, 2018

我一直在 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’s mysql password $$ 使用 SSH 隧道:是 IP 地址:

$$ my server’s ip $$ SSH 使用者名:$$ my name $$ SSH 密碼:$$ my ssh password $$ 我不確定為什麼當我手動執行它時它會在 SSH 上工作,但當 Navicat 執行它時卻不是,即使它可能在很大程度上做同樣的事情。這是什麼意思'::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帶有 host的使用者。localhost其他使用者分別通過 TCP 套接字、IPv4 或 IPv6 連接時使用。

當你使用 Navicat 進行 ssh 埠轉發時,會使用 TCP 套接字,特別是 IPv6 TCP 套接字(因為 IPv6 優於 IPv4)。因此,該使用者是被驗證的使用者。

我們大多數人通過確保所有三行的密碼設置相同來處理這個問題。

引用自:https://serverfault.com/questions/928568