MySQLデータベースホスト127.0.0.1とlocalhostの違い

MySQLデータベースホスト127.0.0.1とlocalhostの違い

私の友人の多くは、127.0.0.1 と localhost の違いがわからず、問題に遭遇するかもしれません。しかし、localhost を使用して接続できないが、127.0.0.1 に変更すると接続できることに気付くことがあります。では、それらの違いは何でしょうか? 紹介しましょう。

  1. mysql -h 127.0.0.1 を使用する場合、TCP/IP を使用して接続します。MySQL サーバーは、接続が 127.0.0.1 または "localhost.localdomain" から行われているものと認識します。
  2. mysql -h localhost を使用すると、TCP/IP 接続は使用されず、Unix ソケットが使用されます。このとき、mysql サーバーはクライアントが "localhost" からのものであると認識します。
  3. MySQL 権限管理における「localhost」には特定の意味があります。

注: 2 つの接続方法は異なりますが、localhost がデフォルトの 127.0.0.1 の場合、両方の接続方法で使用される権限レコードは次の 1 行目のレコードになります (レコードが最初に来て最初に一致するため)

************************** 1. 行 **************************** 
ホスト: ローカルホスト 
ユーザー: root 
...... 
************************** 2. 行 **************************** 
ホスト: 127.0.0.1 
ユーザー: root

証明する:

シェル>mysql -h 127.0.0.1 
mysql> ステータス; 
現在のユーザー: root@localhost 
SSL: 使用されていません 
現在のページャ: stdout 
出力ファイルの使用: '' 
区切り文字の使用: ; 
サーバーバージョン: 5.1.33-log ソース配布 
プロトコルバージョン: 10 
接続: TCP/IP経由の127.0.0.1 
シェル> mysql -h locahostmysql> ステータス; 
現在のユーザー: root@localhost 
SSL: 使用されていません 
現在のページャ: stdout 
出力ファイルの使用: '' 
区切り文字の使用: ; 
サーバーバージョン: 5.1.33-log ソース配布 
プロトコルバージョン: 10 
接続: UNIX ソケット経由のローカルホスト

問題を見つける

昨日、同僚が Linux 環境をコンパイルしてインストールするのを手伝っていたとき、次のような問題に遭遇しました。

Web サーバーは Apache、データベースは MySQL です。

そこで、データベースへの接続をテストするための PHP ページを作成しました。

ローカルホストに接続します。

テストするにはhttp://localhost/test.phpを開きます

ヒント: ソケット経由でローカル MySQL サーバーに接続できません...

環境が正常であることを確認する

データベースが起動していないと思ったのでプロセスを確認したところ、MySQLがプロセス中だったのでMySQLを再起動しました。

mysql -u root -pを使用してMySQL操作インターフェースに入ります

/usr/local/php5/bin/php /web/test.phpを直接使用して実行し、データベースに接続します。

Apacheを再起動しましたが、動作しませんでした。

質問: Web ページの実行は失敗したのに、コマンドの実行は成功したのはなぜですか?

これは非常にイライラします。PHP コマンドを使用して直接実行すると成功しますが、Web ページ経由で実行すると失敗します。それはApacheが原因でしょうか?オンラインで多くの情報を検索しましたが、解決策が見つかりませんでした。Apache を再コンパイルしてインストールした後も、問題は解決しません。

ローカルホストを 127.0.0.1 に変更しました

localhost を 127.0.0.1 に変更したら、接続は成功しました。私はジレンマに陥り始めました。なぜ localhost は失敗し、127.0.0.1 は成功したのでしょうか?

Ping ローカルホストのアドレスは 127.0.0.1 です

ホストを開いて参加する

127.0.0.1 qttc

qttc をホスト接続として使用するのは正常ですが、localhost は認識されません。

異なるローカルホスト接続方法により、

PHP がデータベースに接続するときに localhost と他のホストを入力することの違いを理解するために、私は多くの情報を読み、最終的に次のことを学びました。

ホストがlocalhostとして入力されている場合、MySQLはunix domain socket接続を使用します。

ホストが127.0.0.1と入力されている場合、MySQLはTCPを使用して接続します。

これは Linux ソケット ネットワークの機能です。Windows プラットフォームではこの問題は発生しません。

回避策

my.cnfの[mysql]セクションに追加します。

protocol=tcp

要約する

上記は、編集者が紹介した MySQL データベース ホスト 127.0.0.1 と localhost の違いです。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • MySQLがlocalhost経由でデータベースに接続できない問題に対する完璧な解決策
  • MySQLがlocalhostを使用して接続できるがIPを使用して接続できない問題の解決策
  • mysql_connect localhost と 127.0.0.1 の違い (ネットワーク層の説明)
  • PHP で localhost を使用して Mysql への接続に失敗する問題を解決する方法
  • php mysql localhost、127.0.0.1 と IP の違い
  • 新しく作成された MySQL ユーザーの % には localhost が含まれていますか?

<<:  Nginx のタイムドログカットの詳細な説明

>>:  Vue Element UIの使用時に遭遇した問題をまとめる

推薦する

MySQL データを誤って削除した場合の簡単な解決策 (MySQL フラッシュバック ツール)

概要Binlog2sql は、Python で開発されたオープンソースの MySQL Binlog ...

webpackでvue環境を構築する際の異常なエラーを解決する

目次まず、package.jsonを設定します次にwebpackツールをインストールしますwebpa...

ウェブ開発者やデザイナーにとって欠かせないオンラインウェブツールとアプリケーション

これまでの記事で、フロントエンド開発者にとって必須のツール、スクリプト、リソースのコレクションを紹介...

Dockerを使用してクローンリポジトリを使用してGitイメージを構築する

概要私は 1 年以上 Docker を使用しています。最近、サービスをすばやくオーケストレーションし...

JavaScript でオブジェクトのプロパティを削除する方法

1. 削除delete は、オブジェクトのプロパティを残さずに削除する唯一の方法ですが、その「代替」...

MySQL マスタースレーブ同期、トランザクションロールバックの実装原理

ビンログBinLog は、データベース テーブル構造の変更 (テーブルの作成、変更など) とテーブル...

マウス追従ゲームを実現するjs

この記事では、マウス追従ゲームを実装するためのjsの具体的なコードを参考までに共有します。具体的な内...

Windows が MySQL サービスを開始できず、エラー 1067 を報告する場合の解決策

突然、MySQLにログインすると、アクセスが拒否されたか、データベースに接続できないと表示されました...

Linux の MySQL 設定の変更が有効にならない問題の解決方法

背景AWS EC2 を使用するプロジェクトサービスがあります。セキュリティとパフォーマンスを考慮して...

MySQL マスタースレーブ同期遅延の原因と解決策

歴史的な理由により、MySQL レプリケーションは、REDO ログではなく論理バイナリ ログに基づい...

Node.jsをゼロから学ぶ

目次URL モジュール1. 解析メソッド2. フォーマット方法3. 解決方法イベントモジュール(イベ...

Nodejs での WeChat アプレット メッセージ プッシュの実装

サブスクリプションメッセージテンプレートを選択または作成するWeChat アプレットにログインし、「...

Docker で Tomcat を使用して Web アプリケーションを迅速にデプロイする方法の例

Docker の基本的な操作を学習した後、コンテナにいくつかの基本的なアプリケーションをデプロイして...

MysqlクエリJSON結果に関連する関数の概要

JSON 形式のフィールドは、MySQL 5.7 で追加された新しい属性ですが、基本的には文字列とし...

CentOS 7.6 Telnetサービス構築プロセス(Opensshアップグレードバトル第一弾のバックアップトランスポートライン構築)

不明な点があるときはいつでも、Blog Park にアクセスして、いつでも答えやインスピレーションを...