ホームページ  >  記事  >  データベース  >  MySQL が特権を付与するときに「localhost」と「127.0.0.1」を別々に扱うのはなぜですか?

MySQL が特権を付与するときに「localhost」と「127.0.0.1」を別々に扱うのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-23 11:38:33777ブラウズ

Why Does MySQL Treat `localhost` and `127.0.0.1` Differently When Granting Privileges?

Localhost と 127.0.0.1: MySQL 権限の奇妙なケース

MySQL を使用する場合、一見混乱を招くような差異に遭遇するのが一般的です「localhost」という用語と「127.0.0.1」。この違いは、データベース システム内でユーザーに権限を付与するというコンテキストで明らかになります。

説明するには、次の例を考えてみましょう。

$ mysql -u root -h 127.0.0.1 -e 'show tables' created_from_host;
+-----------------------------+
| Tables_in_created_from_host |
+-----------------------------+
| test                        |
+-----------------------------+

$ mysql -u root -h localhost -e 'show tables' created_from_host;
ERROR 1049 (42000): Unknown database 'created_from_host'

この矛盾は、MySQL が、ホスト名 (例: 「localhost」) およびソケット経由で行われた接続 (例: 「127.0.0.1」)。ホスト名が指定されていない場合、または「localhost」で接続する場合に使用されるソケット メソッドは、ローカル ソケットを利用してデータベース サーバーと通信します。

この違いは、ユーザー権限の領域で重要になります。 「root」のすべてのホストからすべてのデータベースに対するすべての権限を付与するための簡単なガイドは次のとおりです:

  1. root アカウントを使用して MySQL に接続します:

    $ mysql -u root -p
  2. 次のコマンドを実行して、権限:

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
  3. 変更を確実に有効にするために権限をフラッシュします:

    FLUSH PRIVILEGES;

次の手順に従うことで、その「root」は、「localhost」経由で接続されているかどうかに関係なく、任意のホストからデータベース システムに無制限にアクセスできます。 '127.0.0.1'.

以上がMySQL が特権を付与するときに「localhost」と「127.0.0.1」を別々に扱うのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。