数か月間、ローカルテストサーバーで実行されているMySQLインスタンスにSSHトンネルを介して問題なく接続してきました。突然ですが、私が考えることができる変更はありませんが、サーバーは次のエラーでSequel Proからのログを拒否しようとしました:
アクセスが拒否されたため、ホスト127.0.0.1に接続できません。
ユーザー名とパスワードを再確認し、現在の場所からのアクセスが許可されていることを確認してください。
MySQLは言いました:ユーザー 'root' @ 'localhost'のアクセスは拒否されました(パスワードを使用:YES)
SSHトンネルを介してではなく、SSHを介してサーバーに直接接続すると、ターミナルからログインできます。この問題は、Sequel Proや自分自身に限ったことではありません。MySQLWorkbenchを介して接続すると、オフィスの他のユーザーと同じエラーが発生します。私はmysqladmin
正気のためにパスワードをリセットしましたが、それは間違いなく問題ではありません。
さらに調べ始めたとき、Sequel Proで入力した「127.0.0.1」ではなく、「localhost」としてサーバーが報告しているエラーに気づきました。友人は、それはおそらく悪いエラー処理であると示唆しましたが、ローカルホストとMySQLの127.0.0.1の大きな違いを考えると、奇妙に思えます。
トンネリングの問題を回避するために、root @%へのアクセスを許可して、直接接続できるようにしました。ほとんどの場合、これは機能します。テーブルデータを表示したり、新しいデータベースを作成したりできます。唯一の問題は、ユーザーを作成するときにエラーが発生することです。
ユーザー 'root' @ '%'のアクセスが拒否されました(パスワードを使用:YES)
奇妙なことに、ユーザーは実際に作成されますが、それは単に付与の問題だと思います。繰り返しますが、rootとしてログインすると、端末から何でもできます。
トンネル接続と(おそらく)許可コマンドがアクセス拒否エラーを受信している理由を解明するのに役立つ人はいますか?
参考までに、MySQはバージョン5.6.16で、ほとんどがデフォルト設定で、Homebrewを介してMAC OS X Serverマシンにインストールされます。
更新
ルートが現在アクセスを許可されているホストのリストは次のとおりです。
mysql> select host,user from mysql.user where user='root';
+----------------+------+
| host | user |
+----------------+------+
| % | root |
| 127.0.0.1 | root |
| ::1 | root |
| localhost | root |
+----------------+------+
4 rows in set (0.00 sec)
私が理解しているように、最初の行( "%")は本当に他の行を冗長にする必要がありますか?
更新2
助成金の問題を修正しました。root @%ユーザーにはすべての特権が付与されているわけではなくwith grant option
、最後に追加の特権が付与されているため、付与する以外のすべてのことが可能です。それでも、SSHトンネルが拒否されている理由を知りたいと思っています。