MySQL Master / Slave 설정이 있고 두 서버의 mysql 로그 파일에서 다음 경고가 나타났습니다.
[Warning] IP address 'xxx.xxx.xxx.xxx' could not be resolved: Name or service not known
확인한 결과 DNS 조회가 제대로 작동하며 대부분의 IP는 중국산입니다.
방화벽에서 포트 3306에 대한 액세스를 제한 할 계획이지만 그들이 무엇을하는지 이해하도록 도와 줄 수 있습니까? 그들은 단지 MySQL 서버에 연결하려고합니다. 더 자세한 내용을 찾을 수있는 곳.
감사
답변
MySQL 사용자를 만들 때 username@example.com
MySQL은 연결된 모든 IP 주소에 대해 역방향 조회를 수행하여 이들이 일부인지 확인해야합니다 example.com
.
물론 역방향 조회를 작성하는 데 제한이 없으므로 google.com
원하는 경우 공급자에게 IP 주소의 역방향 조회를 설정하도록 요청할 수 있습니다 … 또는 example.com
데이터베이스의 사용자가 갖는 것을 알고 있는지 . MySQL은 반환 된 도메인에서 정방향 조회를 수행하여 연결하는 동일한 IP 주소와 일치하는지 확인하지 않습니다.
당신은 이것을 해제 할 수 있습니다 skip_name_resolve
당신에 my.cnf
. 이것을하는 데에는 많은 이유가 있습니다 .
이 오류가 발생하는 이유는 해당 IP 주소에 대한 역방향 조회가 전혀 없기 때문입니다.
또한 중국의 악의적 인 공격자가 데이터베이스에 침입하려고합니다. 그것이 최우선 과제입니다.
답변
데이터베이스 서버를 인터넷에 직접 노출시키는 것은 매우 나쁜 생각이라고 생각합니다.
원격 호스트에 복제하고이를 달성하기 위해 인터넷에 액세스해야하는 경우 두 네트워크 사이에 VPN을 설정하고 로컬 네트워크 만 수신하도록 MySQL 서버를 바인딩하는 것이 좋습니다.
두 호스트가 모두 동일한 로컬 네트워크에 있으면 mysql 서버를 해당 네트워크에 안전하게 바인딩 할 수 있습니다.
답변
Amazon RDS에서도이 문제가 발생했습니다. 테스트 데이터베이스 인스턴스에만 연결하고 싶었습니다 (다음은 프로덕션 데이터베이스 에는 권장되지 않습니다 ).
Amazon RDS의 보안 그룹은 EC2 인스턴스의 일반 방화벽 규칙과 약간 다르게 작동합니다. 특정 IP에 대해 MySQL 포트를 열면 MySQL 서버에서 IP를 인식해야합니다. 그렇지 않으면 연결이 거부됩니다. 임시 솔루션은 anyone_can_connect_to_mysql
단 하나의 항목으로 새로운 보안 그룹을 생성 하는 것입니다. 인터넷 어디에서나 인바운드 연결 MySQL / Aurora를 허용하고이 보안 그룹을 데이터베이스에 연결하십시오.
Inbound
-----------------------------------------
| MYSQL/Aurora | TCP | 3306 | 0.0.0.0/0 |
-----------------------------------------
그러면 클라이언트 연결에서 IP 검사가 제거되므로 자유롭게 연결할 수 있습니다. anyone_can_connect_to_mysql
해결 문제가 해결되면 데이터베이스 에서 정책 을 분리해야합니다 .
답변
Mysql에 원격으로 연결할 때 오류가 발생했습니다. 나는이 경고를했다 /var/log/mysqld.log
:
[Warning] IP address 'X.X.X.X' could not be resolved: Temporary failure in name resolution
방금이 줄을 /etc/hosts
파일에 추가했습니다 .
X.X.X.X some_name
문제 해결됨! 를 사용하지 않으면 skip-name-resolve
mysql에 연결할 때 로컬 앱에서 오류가 발생했습니다.