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」のすべてのホストからすべてのデータベースに対するすべての権限を付与するための簡単なガイドは次のとおりです:
root アカウントを使用して MySQL に接続します:
$ mysql -u root -p
次のコマンドを実行して、権限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
変更を確実に有効にするために権限をフラッシュします:
FLUSH PRIVILEGES;
次の手順に従うことで、その「root」は、「localhost」経由で接続されているかどうかに関係なく、任意のホストからデータベース システムに無制限にアクセスできます。 '127.0.0.1'.
以上がMySQL が特権を付与するときに「localhost」と「127.0.0.1」を別々に扱うのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。