2010-08-17 4 views
0

저는 MySQL을 사용 중이며 웹 서비스가 데이터베이스에 연결하여 일부 값을 읽습니다.
웹 서비스와 데이터베이스가 동일한 서버에 있습니다.
서버의 공용 정적 IP와 MySQL의 포트를 통해 데이터베이스에 대한 액세스를 거부하고 싶습니다. 즉, localhost, 을 통해서만 데이터베이스에 액세스 할 수 있으므로 웹 서비스 만 연결할 수 있습니다., 어떻게 그렇게 할 수 있습니까? MySQL에서 어떤 구성을해야합니까?IP가 아닌 localhost를 통해 MySQL DB에 대한 액세스를 제한 하시겠습니까?

+2

공용 정적 IP를 통해 데이터베이스에 대한 액세스를 거부하려면 방화벽에 규칙을 추가해야합니다. serverfault에 속합니다. –

답변

3

mySQL에 대한 액세스를 특정 응용 프로그램으로 제한 할 수 없습니다.

그러나 127.0.0.1에서 연결하도록 제한되는 사용자 계정 (예 : webservice)을 만들 수 있습니다. 이는 내가 아는 한 최선을 다해 완전히 충분해야합니다.

+0

우리는 익명으로 공용 IP를 통해 mysql DB에 대한 익명 로그인을 비활성화 할 수 없습니까? 127.0.0.1 (localhost)를 통해서만 DB에 로그인 할 수 있습니까? –

+2

@Ashraf 네, 그게 제가 말하고자하는 것입니다. 올바른 사용 권한을'GRANT'하면됩니다. 또 다른 것은 외부로부터의 요청이 전혀 통과하지 못하도록 방화벽을 구성하는 것입니다. –

+2

그건 정확히 Pekka (그리고 나 자신이 말하는 것)입니다. 'localhost'에서 연결에 대한 액세스를 제한 할 수 있지만 로컬에서 실행중인 다른 프로그램이있는 경우 데이터베이스에 액세스하는 것을 막을 수 없습니다 (올바른 암호/사용자 이름이 있다고 가정하면 ...) – Stephen

2

웹 서비스에만 액세스를 제한 할 수있는 방법이 없습니다. 동일한 호스트에서 실행중인 응용 프로그램으로 만 제한 할 수 있습니다. 이렇게하려면 호스트가 127.0.0.1이거나 localhost 인 새 사용자를 만들어야합니다. 그래픽으로 또는 명령 줄을 통해 수행 할 수 있습니다.

CREATE USER 'webservice'@'localhost' IDENTIFIED BY 'webservicepassword'; 
// Grant privileges here... 
// For example, GRANT ALL PRIVILEGES ON *.* TO 'webservice'@'localhost' - but it's a far better idea to restrict access to only what it needs... 
+0

사용자 만들기 필요 없음 . GRANT 쿼리만으로 모든 것을 처리 할 수 ​​있습니다. –

관련 문제