私はいつも 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 のルート ユーザーが微妙に異なります。(これは本当に面倒ですが、ずっとこの状態が続いており、おそらく今後も変わらないでしょう...)
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 ソケットを使用して接続する場合にのみ使用されます。その他のユーザーは、それぞれ IPv4 または IPv6 を介して TCP ソケット経由で接続するときに使用されます。
Navicat で SSH ポート転送を行う場合、TCP ソケット、具体的には IPv6 TCP ソケットが使用されます (IPv6 は IPv4 よりも優先されるため)。そのため、そのユーザーが認証対象となります。
私たちのほとんどは、3 行すべてでパスワードが同じに設定されていることを確認することで、この問題に対処します。