MySQL 데이터베이스 으로 작업하는 경우 데이터베이스를 안전하게 유지하는 데 직면한 문제를 이미 알고 있는 것입니다. SQL 인젝션을 사용한 데이터베이스 해킹 시도에서 무차별 대입 공격에 이르기까지, 특히 데이터베이스를 원격으로 작업하는 경우 데이터를 안전하게 유지하기 어렵습니다.
원격 연결을 허용하도록 SQL 서버를 구성하는 방법이 있습니다. 그러나 MySQL 서버에서 원격 연결을 허용하면 데이터베이스가 해커의 쉬운 표적이 될 수 있으므로 주의해야 합니다. MySQL 데이터베이스에 대한 안전한 원격 연결을 허용하려면 다음 사항을 알아야 합니다.
앞서 시작
MySQL 데이터베이스를 변경하기 전에 특히 프로덕션 서버(서버 적극적으로 사용). 데이터베이스 또는 이를 호스팅하는 서버를 변경하면 문제가 발생하면 심각한 데이터 손실이 발생할 수 있습니다.
서버 연결을 변경하면 나중에 액세스하지 못할 수도 있습니다. 이 경우 추가 지원을 위해 서버 관리자에게 문의해야 할 수 있습니다. 좋은 아이디어는 로컬에서 실행되는 MySQL 서버에서 변경 사항을 시도하여 원격으로 시도하기 전에 변경 사항이 작동하는지 확인하는 것입니다.
원격 서버를 변경하는 경우에도 연결하고 변경할 수 있는 안전한 방법이 필요합니다. SSH(Secure Shell)는 원격 서버에 연결할 수 있게 해주기 때문에 이를 수행하는 가장 좋은 방법인 경우가 많습니다. SSH를 사용하여 라즈베리 파이에서 호스팅 과 같은 로컬 네트워크의 서버에 연결할 수도 있습니다.
이 가이드는 다음 단계를 안내합니다. 원격 연결을 허용하도록 MySQL을 구성하지만 먼저 MySQL 서버를 호스팅하는 서버에 직접 또는 원격 액세스 권한이 있는지 확인해야 합니다.
예를 들어 SSH를 통해 서버에 원격으로 액세스할 수 없다고 가정합니다. 이 경우 루트 mySQL 계정이 이미 원격 연결을 허용하지 않는 한 원격 연결을 직접 허용하도록 MySQL 데이터베이스를 구성할 수 없습니다. 따라서 계속하기 전에 먼저 이 연결을 설정해야 합니다.
MySQL 구성 파일 편집
원격을 허용하도록 MySQL을 구성하는 첫 번째 단계 연결은 MySQL 구성 파일을 편집하는 것입니다. 이 단계에서 이 가이드는 mySQL 데이터베이스를 원격으로 호스팅하는 서버, PC 또는 Mac에 이미 연결되어 있고 콘솔 액세스 권한이 있다고 가정합니다.
또는 Mac 또는 Linux의 개방형 터미널 또는 Windows의 텍스트 편집기를 사용하여 로컬 MySQL 서버를 구성할 수 있습니다.
위에서 참조한 위치는 기본 위치입니다. MySQL 구성 파일용. 이 명령이 작동하지 않으면 관련 파일(my.cnf, mysqld.cnf또는 my.inistrong>) 수동으로 관련 파일 경로를 찾습니다.
Safe Bind-Address IP 범위 설정
- 다음으로 Linux 및 Mac 사용자는 mysql.server stop && mysql.server start또는 mysql.server restart를 입력하여 MySQL을 다시 시작할 수 있습니다. 명령 sudo 사용 (예: sudo mysql.server restart)를 높이고 mysql.server 파일에 대한 적절한 경로(예: /usr /local/bin/mysql.server).
Windows에서 올바른 서비스 이름을 모르는 경우 net start를 입력하여 찾으십시오.구성을 다시 로드할 수 없으면 서버를 다시 시작하고 대신 수동으로 MySQL을 다시 로드하십시오(필요한 경우).
방화벽 구성
이 단계에서 MySQL 데이터베이스는 MySQL 구성 파일에서 bind-address값으로 설정한 IP 주소를 사용하는 기기(또는 이 값을 0.0.0.0으로 설정한 경우 모든 기기)에서 원격 연결을 허용해야 합니다.대신). 그러나 연결은 기기 또는 네트워크 방화벽에 의해 계속 차단됩니다.
대부분의 서버와 PC는 특정 포트에 대한 액세스가 허용되지 않는 한 방화벽을 사용하여 연결을 차단합니다. 이를 구성하는 단계는 MySQL을 Windows에서 실행하는지 Linux에서 실행하는지에 따라 다릅니다. Mac 방화벽은 기본적으로 비활성화되어 있으므로 여기에서 추가 단계를 완료할 필요가 없습니다.
Linux 방화벽 구성
많은 Linux 서버에서 iptables를 기본 방화벽 유틸리티로 사용합니다. 아래 단계에 따라 구성할 수 있습니다.
iptables가 Linux 배포판의 기본 방화벽 도구가 아닌 경우 배포판의 사용자 설명서에서 자세한 내용을 참조해야 합니다. 특정 패키지(예: netfilter-persistent)를 사용할 수 없는 경우 배포의 소프트웨어 저장소 도구를 사용하여 설치합니다(예: sudo apt install netfilter-persistent).
Windows 방화벽 구성
Windows PC 또는 서버를 사용하여 데이터베이스를 호스팅하는 경우 다음 단계에 따라 방화벽을 구성할 수 있습니다.
연결에 문제가 있으면 위의 단계를 반복하세요. , 동일한 세부정보(포트 3306 등)를 사용하여 방화벽 설정에서 새 발신 규칙을 만들어야 합니다. 데이터베이스에 대한 인바운드 및 아웃바운드 연결을 허용하려면 로컬 네트워크 라우터를 필요한 차단된 포트를 엽니다. 으로 구성해야 할 수도 있습니다.
MySQL을 사용하여 원격 서버에 연결
원격 연결을 허용하도록 MySQL 데이터베이스를 구성한 후 실제로 연결을 설정해야 합니다. 터미널 또는 PowerShell 창에서 mysql명령(Windows의 경우 mysql.exe)을 사용하여 이 작업을 수행할 수 있습니다.
Windows를 실행하는 경우 시작하기 전에 MySQL이 로컬에 설치됨 인지 확인해야 합니다. Mac 사용자는 터미널에서 MySQL 홈브류 사용 을 설치할 수 있고(brew install mysql), Linux 사용자는 로컬 앱 저장소(예: sudo apt install mysql)를 사용할 수 있습니다. strong>) 필요한 패키지를 설치합니다.
Linux 또는 Mac에서 MySQL에 연결
Windows에서 MySQL에 연결하기
이 방법이 작동하지 않으면 다음 단계와 -h localhost인수를 사용하여 SSH를 사용하여 MySQL 서버를 호스팅하는 서버 또는 PC에 연결하거나 직접 액세스합니다. 그런 다음 아래 단계에 따라 적절한 사용자 계정을 만들 수 있습니다.
MySQL 데이터베이스에 대한 원격 사용자 액세스 허용
이 시점에서 귀하는 서버의 루트 사용자 계정 또는 상승된 권한을 가진 다른 사용자 계정을 사용하여 원격으로 MySQL 서버에 연결할 수 있습니다. 이 수준의 액세스는 안전하지 않으므로 MySQL 데이터베이스에 액세스하기 위해 더 제한된 계정을 만드는 것이 좋습니다.
이 계정은 MySQL 서버에 대한 액세스가 제한되어 선택한 데이터베이스와만 상호 작용할 수 있습니다. 다른 데이터베이스 데이터 액세스, 새 사용자 계정 생성 등과 같은 더 심각한 변경을 수행할 수 없습니다.
MySQL 서버에 원격으로 로그인할 수 있는 기능이 있어야 합니다. 루트 계정을 원격으로 사용할 수 없는 경우 원격 SSH 연결을 통해 또는 서버를 호스팅하는 PC 또는 서버에 직접 액세스하여 mysql명령을 사용하여 서버의 셸에 액세스해야 합니다.
액세스 권한이 부여되면 위 섹션의 단계를 사용하여 새 계정을 사용하여 원격으로 서버에 연결합니다(예: mysql -u 사용자 이름 -h XXXX:XXXX -p).
데이터베이스 데이터 보안
MySQL 또는 다른 유형의 SQL로 작업하는지 여부 데이터 보안을 유지하려면 연결을 안전하게 유지하는 것이 중요합니다. 이를 수행하는 좋은 방법은 오래된(쉽게 추측할 수 있는) 비밀번호에 의존하는 대신 서버에 원격 액세스를 위한 SSH 키 생성 를 연결하는 것입니다.
데이터 손실이 걱정된다면 온라인에서 쉽게 데이터베이스 백업 할 수 있습니다. 대부분의 데이터베이스는 Linux 서버를 사용하여 실행됩니다. Linux 파일 백업을 쉽게 자동화 수 있습니다. Windows에서 MySQL을 실행하는 경우 유사한 Windows용 자동 백업 시스템 를 설정하여 비상 시 데이터를 복원할 수 있습니다.