0

libmysql C APIを使用していますが、このmysql_real_connect呼び出しは、ホストの実際のIPアドレス(以外)を使用した場合にのみ機能しますlocalhost。ホストとして使用するlocalhostと、次のエラーが発生します。

エラー2003(HY000):「localhost」のMySQLサーバーに接続できません(0)

使用されるユーザーはローカルホストおよび任意のホストからのすべての特権を持っているため、認証は正常である必要があります。

ちなみに、これはWindows7へのXAMPPインストールです。

4

3 に答える 3

2

同じ問題が発生しました。解決策は、IPv6サポートをアンインストールして無効にすることです。これは、IPv6サポートを有効にした場合、ping localhostコマンドは、etc \ hostsファイルに書き込んだ127.0.0.1の代わりに::1を返し、サンプルのmysql接続プログラムを記述したためです。 Cでlibmysqlを使用している場合、ホストパラメータとしてmysql_real_connect()に「localhost」を指定した場合は接続しません。現在、IPv6を無効にすると、両方のオプション("localhost"または"127.0.0.1")が機能します。

PS:私はこの「解決策」をWindows XP SP3ProCzechでのみ試しました。Windows 7とLinuxでは、これを試しません。

于 2012-11-27T13:49:08.420 に答える
0

DNSが壊れている(ping localhost期待どおりに機能しますか?)か、「localhost」が特別に処理される方法が問題です。

hostの値は、ホスト名またはIPアドレスのいずれかです。ホストがNULLまたは文字列「localhost」の場合、ローカルホストへの接続が想定されます。Windowsの場合、サーバーで共有メモリ接続が有効になっていると、クライアントは共有メモリ接続を使用して接続します。それ以外の場合は、TCP/IPが使用されます。

http://dev.mysql.com/doc/refman/5.0/en/mysql-real-connect.htmlを参照してください

于 2012-03-06T12:49:43.457 に答える
0
  1. / etc / hostsファイルで次のように定義されているかどうかを確認します:127.0.0.1 localhost
  2. mysqlがそのポートをどのようにバインドしているかを確認します。

    root @ dam2k:〜#netstat -natp | grep 3306 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2215 / mysqld

于 2012-03-06T12:50:06.987 に答える