Mysql が 127.0.0.1 をホスト名に解決する

Mysql が 127.0.0.1 をホスト名に解決する

コマンドを使用してmysqlに接続しようとしています

mysql -h 127.0.0.1

エラーが表示される

ERROR 1045 (28000): Access denied for user 'root'@'mydomain.com' (using password: NO)

なぜ 127.0.0.1 が私のドメイン名に変換されるのですか? また、どうすれば修正できますか?

ただし、ホストを指定しない場合 (さらに、'localhost' が指定されている場合) は機能します。

編集: TCPを使用するとドメイン名に解決されるようですが、

mysql -h localhost --protocol=TCP

編集2: skip-name-resolve を使用すると、 が のパブリック IPmydomain.comに置き換えられることを除いて、同様の出力が得られます。x.x.x.xmydomain.com

答え1

すべての外部パケット(LO を含む)をマスカレードしていました。iptable -t nat POSTROUTINGルールを削除/編集すると、問題は解決しました。

答え2

おそらく、これは hosts ファイルのエントリによって発生します。

答え3

おそらく、mysql は 0.0.0.0 ではなくパブリック IP のみをリッスンしているのではないでしょうか。

答え4

1) /etc/hosts をチェックして、127.0.0.1 が mydomain.com ではなく localhost のみを指していることを確認します。mydomain.com は、localhost.localdomain ではなく、サーバーの実際の IP アドレスに関連付けられている必要があります。

2) また、mysql インスタンスで root のパスワードを設定したようです (実際、これは良いことです)。ログインに「-p」スイッチを追加して、次のようにすることをお勧めします。

mysql -h ローカルホスト -p

次に、root のパスワードを入力するよう求められます。お役に立てば幸いです。

関連情報