11

次のコードでmysqlに接続できます。 mysql_connect("localhost","username","");

しかし、に変更localhostする127.0.0.1と、次のエラーが発生します。

'127.0.0.1'でMySQLサーバーに接続できません(13)

なぜ127.0.0.1で動作しないのですか?

4

5 に答える 5

20

localhost特殊なケースで、TCP/IPの代わりにUNIXソケットを使用します。127.0.0.1その特別な処理は受けません。

ドキュメントを参照してください:

Unixでは、MySQLプログラムはホスト名localhostを特別に扱い、他のネットワークベースのプログラムと比較して予想とは異なる可能性があります。ローカルホストへの接続の場合、MySQLプログラムはUnixソケットファイルを使用してローカルサーバーに接続しようとします。これは、ポート番号を指定するために--portまたは-Pオプションが指定されている場合でも発生します。クライアントがローカルサーバーへのTCP/IP接続を確実に確立するには、-hostまたは-hを使用して、ホスト名の値127.0.0.1、またはローカルサーバーのIPアドレスまたは名前を指定します。--protocol = TCPオプションを使用して、ローカルホストの場合でも接続プロトコルを明示的に指定することもできます。

TCP / IPを使用しても機能しない場合は、データベースがネットワークでリッスンしていない可能性があります。これはセキュリティを強化するため、一般的には良いことです(127.0.0.1でリッスンすると問題が発生するわけではありませんが、すべてのインターフェイスでリッスンすると攻撃の機会が増えます)。

本当にネットワーク経由の接続を許可したい場合は、skip-networkingを参照してください。

于 2012-04-27T09:18:56.157 に答える
1

ホストファイルに127.0.0.7をローカルホストにマッピングするエントリがありますか?

于 2012-04-27T09:19:11.700 に答える
0

システムに複数のmysqlサーバーがインストール/実行されていますか?その場合は、アクセスしようとしているmysqlサーバーのポート番号(127.0.0.1:3306,127.0.0.1:8889など)を指定してください。

システムで実行されている他のmysqlサーバーインスタンスがあるかどうかわからない場合は、ポートを指定してください。

于 2012-04-27T09:21:29.470 に答える
0

データベース'root'@'127.0.0.1'"USER_PRIVILEGES"テーブルにの権限を追加すると、アクセスできるようになります"information_schema"

于 2012-04-27T09:21:34.137 に答える
0

SELINUXを無効にしてみることもできます

于 2016-08-02T09:52:21.467 に答える