>  기사  >  데이터 베이스  >  MySQL이 권한을 부여할 때 'localhost'와 '127.0.0.1'을 다르게 처리하는 이유는 무엇입니까?

MySQL이 권한을 부여할 때 'localhost'와 '127.0.0.1'을 다르게 처리하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-23 11:38:33771검색

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

로컬 호스트 대 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'로 연결할 때 사용되는 소켓 방식은 로컬 소켓을 활용하여 데이터베이스 서버와 통신합니다.

이러한 구별은 사용자 권한 영역에서 중요합니다. 다음은 '루트'에 대해 모든 호스트의 모든 데이터베이스에 대한 모든 권한을 부여하는 방법에 대한 간단한 가이드입니다:

  1. 루트 계정을 사용하여 MySQL에 연결:

    $ mysql -u root -p
  2. 다음 명령을 실행하여 권한을 부여하세요. 권한:

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
  3. 변경 사항이 적용되도록 권한을 플러시합니다.

    FLUSH PRIVILEGES;

다음 단계에 따라 다음을 수행할 수 있습니다. 해당 '루트'는 'localhost'를 통해 연결되었는지 여부에 관계없이 모든 호스트에서 데이터베이스 시스템에 무제한으로 액세스할 수 있습니다. '127.0.0.1'.

위 내용은 MySQL이 권한을 부여할 때 'localhost'와 '127.0.0.1'을 다르게 처리하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.