6

次のコマンドを使用して、(ssh 経由で) リモート サーバー上の mysql データベースに接続しようとしています。

mysql -u me -h mydomain.com -p

しかし、それは ERROR 1045 (28000): Access denied for user.. エラーで失敗します

その間

mysql -u me -h localhost -p

作品

これは、パーミッションを設定していないからというだけではありません。このデータベースへのパーミッションは % または me ユーザーの任意のホストに設定されているからです。

これは、同じユーザーを使用して、ローカル マシンからサーバーに正しく接続できるという事実によって証明されています。つまり、ローカル マシンから次のコマンドを実行すると動作します。

mysql -u me -h mydomain.com -p

なぜこれが起こるのか、どうすれば修正できますか?任意のホストからの接続を受け入れるように権限が設定されているにもかかわらず、localhost の代わりにドメイン名を使用すると、自分のサーバーから mysql サーバーに接続できないのはなぜですか。

4

1 に答える 1

16

これは、MySQL が許可付与を処理する方法が原因で発生します。

リモートホストから (または外部 IP を介してローカルホストから) 接続すると、me@%エントリと一致します (使用している特定のホストに特定の許可がない場合!)。ただし、ループバック インターフェイス (「localhost」IP) またはソケット経由で接続する場合は、me@localhost許可が使用されます。したがって、2 つ必要GRANT PRIVILEGESです。1 つと 1me@localhostme@%

于 2010-07-15T09:50:11.990 に答える