MySQL에 대한 원격 연결을 허용하는 방법


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 서버를 구성할 수 있습니다.

    1. 시작하려면 원하는 콘솔 텍스트 편집기를 사용하세요. MySQL 데이터베이스 파일을 편집합니다. Linux에서 터미널이나 SSH 창에 sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf를 입력하여 nano편집기를 사용하여 이 파일을 편집합니다(가정 MySQL 데이터베이스는 기본 위치)에 있습니다.
      1. Windows를 실행 중인 경우 파일 탐색기를 열고 MySQL 설치가 포함된 폴더에 액세스합니다(예: C:/Program Files/MySQL/MySQL Server 8.0). 기본 텍스트 편집기(예: 메모장)를 사용하여 항목을 두 번 클릭하여 my.ini파일을 엽니다. 없는 경우 파일을 먼저 생성 입니다.
        1. Mac의 경우 터미널 창을 엽니다. sudo nano /usr/local/etc/my.cnf를 입력합니다. 이것은 MySQL 홈브류 사용 을 설치한 경우 MySQL의 기본 구성 파일입니다.
        2. 위에서 참조한 위치는 기본 위치입니다. MySQL 구성 파일용. 이 명령이 작동하지 않으면 관련 파일(my.cnf, mysqld.cnf또는 my.inistrong>) 수동으로 관련 파일 경로를 찾습니다.

          Safe Bind-Address IP 범위 설정

          1. 한 번 서버의 MySQL 구성 파일을 연 경우 키보드의 화살표 키를 사용하여 파일의 바인드 주소섹션에 도달합니다. 이 IP 범위는 데이터베이스에 대한 연결을 제한하며 일반적으로 127.0.0.1을 사용하는 로컬 컴퓨터 또는 서버의 연결만 허용하도록 설정됩니다.
            1. 현재 인터넷 연결을 사용하는 기기의 연결을 허용하도록 MySQL 데이터베이스를 구성하려면 먼저 공개 IP 주소 찾기 를 수행한 다음 127.0.0.1을 교체하십시오.해당 IP 주소로. 또는 연결을 허용하려는 장치 또는 서버의 IP 주소로 바꾸십시오.
              1. 경우에 따라 , MySQL 데이터베이스에 대한 모든원격 연결을 허용할 수 있습니다. 이는 극단적인 위험을 수반하며 프로덕션 서버에서 사용해서는 안 됩니다. 그러나 이를 허용하려면 127.0.0.10.0.0.0으로 바꾸십시오.
                1. 기본 설정섹션의 포트값을 기록해 둡니다. 이것은 다음 섹션에서 필요합니다. 표시되지 않으면 기본값인 3306포트가 사용됩니다. 새 줄에 port = xxxx를 입력하고 xxxx를 적절한 포트 값으로 대체하여 고유한 포트를 추가할 수 있습니다.
                  1. MySQL 구성 파일에서 바인드 주소를 구성했으면 파일을 저장하십시오. Linux를 사용하는 경우 Ctrl + OCtrl + X를 선택하여 이 작업을 수행하십시오. Mac의 경우 Command + OCommand + X를 선택합니다. Windows 사용자는 파일>저장을 선택하여 저장할 수 있습니다.
                    1. 다음으로 Linux 및 Mac 사용자는 mysql.server stop && mysql.server start또는 mysql.server restart를 입력하여 MySQL을 다시 시작할 수 있습니다. 명령 sudo 사용 (예: sudo mysql.server restart)를 높이고 mysql.server 파일에 대한 적절한 경로(예: /usr /local/bin/mysql.server).
                    1. 위의 명령이 작동하지 않으면 대신 sudo service mysql restart
                    2. 를 시도하세요.
                      1. Windows에서 MySQL을 다시 시작하려면 시작 메뉴를 마우스 오른쪽 버튼으로 클릭하고 Windows PowerShell(관리자). PowerShell 창에서 net stop mysql80다음에 net start mysql80을 입력하고 mysql80을 PC의 올바른 서비스 이름으로 바꿉니다.
                      2. Windows에서 올바른 서비스 이름을 모르는 경우 net start를 입력하여 찾으십시오.구성을 다시 로드할 수 없으면 서버를 다시 시작하고 대신 수동으로 MySQL을 다시 로드하십시오(필요한 경우).

                        방화벽 구성

                        이 단계에서 MySQL 데이터베이스는 MySQL 구성 파일에서 bind-address값으로 설정한 IP 주소를 사용하는 기기(또는 이 값을 0.0.0.0으로 설정한 경우 모든 기기)에서 원격 연결을 허용해야 합니다.대신). 그러나 연결은 기기 또는 네트워크 방화벽에 의해 계속 차단됩니다.

                        대부분의 서버와 PC는 특정 포트에 대한 액세스가 허용되지 않는 한 방화벽을 사용하여 연결을 차단합니다. 이를 구성하는 단계는 MySQL을 Windows에서 실행하는지 Linux에서 실행하는지에 따라 다릅니다. Mac 방화벽은 기본적으로 비활성화되어 있으므로 여기에서 추가 단계를 완료할 필요가 없습니다.

                        Linux 방화벽 구성

                        많은 Linux 서버에서 iptables를 기본 방화벽 유틸리티로 사용합니다. 아래 단계에 따라 구성할 수 있습니다.

                        1. 터미널 또는 SSH 연결을 열고 sudo iptables -A INPUT -p tcp -s XXXX –dport YYYY -j ACCEPT. XXXX에서MySQL 연결을 허용하려는 기기의 IP 주소로 바꾸고 YYYY를 MySQL 구성에서 일치하는 포트 값으로 바꿉니다. 파일(예: 3306).
                          1. 방화벽을 임시로 구성합니다. Debian 또는 Ubuntu 기반 Linux 서버를 사용하는 경우 터미널 또는 SSH에 sudo netfilter-persistent savesudo netfilter-persistent reload를 입력하여 이 변경 사항을 영구적으로 적용합니다. window.
                          2. iptables가 Linux 배포판의 기본 방화벽 도구가 아닌 경우 배포판의 사용자 설명서에서 자세한 내용을 참조해야 합니다. 특정 패키지(예: netfilter-persistent)를 사용할 수 없는 경우 배포의 소프트웨어 저장소 도구를 사용하여 설치합니다(예: sudo apt install netfilter-persistent).

                            Windows 방화벽 구성

                            Windows PC 또는 서버를 사용하여 데이터베이스를 호스팅하는 경우 다음 단계에 따라 방화벽을 구성할 수 있습니다.

                            1. 시작 메뉴를 마우스 오른쪽 버튼으로 클릭하고 실행을 선택합니다.
                              1. 실행상자에 wf.msc를 입력하고 확인을 선택합니다. strong>.
                                1. Windows Defender창에서 인바운드 규칙 >새 규칙.
                                  1. 새 인바운드 규칙 마법사에서창에서 포트>다음을 선택합니다.
                                    1. 다음 메뉴의 옵션에서 TCP를 선택하고 3306(또는 MySQL 구성 파일에 나열된 포트 값)을 입력한 후 다음.
                                      1. 작업메뉴에서 기본 옵션을 연결을 허용하고 다음을 선택합니다.
                                        1. 확인 규칙을 모든 네트워크 유형에 적용하려면 다음을 선택합니다.
                                          1. 제공된 포트에 규칙을 설명하는 이름(예: MySQL)을 입력합니다. , 마침을 선택하여 방화벽 규칙 목록에 추가하세요.
                                          2. 연결에 문제가 있으면 위의 단계를 반복하세요. , 동일한 세부정보(포트 3306 등)를 사용하여 방화벽 설정에서 새 발신 규칙을 만들어야 합니다. 데이터베이스에 대한 인바운드 및 아웃바운드 연결을 허용하려면 로컬 네트워크 라우터를 필요한 차단된 포트를 엽니다. 으로 구성해야 할 수도 있습니다.

                                            MySQL을 사용하여 원격 서버에 연결

                                            원격 연결을 허용하도록 MySQL 데이터베이스를 구성한 후 실제로 연결을 설정해야 합니다. 터미널 또는 PowerShell 창에서 mysql명령(Windows의 경우 mysql.exe)을 사용하여 이 작업을 수행할 수 있습니다.

                                            Windows를 실행하는 경우 시작하기 전에 MySQL이 로컬에 설치됨 인지 확인해야 합니다. Mac 사용자는 터미널에서 MySQL 홈브류 사용 을 설치할 수 있고(brew install mysql), Linux 사용자는 로컬 앱 저장소(예: sudo apt install mysql)를 사용할 수 있습니다. strong>) 필요한 패키지를 설치합니다.

                                            Linux 또는 Mac에서 MySQL에 연결

                                            1. Mac에서 원격 MySQL 서버에 연결하거나 Linux의 경우 새 터미널 창을 열고 mysql -u 사용자 이름 -h XXXX:XXXX -p를 입력합니다. XXXX:XXXX를 원격 서버 IP 주소 및 포트 번호(예: 100.200.100.200:3306)로 바꾸고 사용자 이름을 MySQL 사용자 이름으로 바꿉니다.
                                              1. 메시지가 표시되면 비밀번호를 확인합니다. 연결이 성공하면 터미널에 성공 메시지가 나타납니다.
                                              2. Windows에서 MySQL에 연결하기

                                                1. 연결하려면 Windows의 원격 MySQL 서버에 연결하려면 시작 메뉴를 마우스 오른쪽 버튼으로 클릭하고 Windows PowerShell(관리자)을 선택하여 새 PowerShell 창을 엽니다.
                                                  1. 새 PowerShell 창에서 cd "C:\Program Files\MySQL\MySQL Workbench 8.0\"을 입력하여 이 디렉토리를 대체하고 올바른 폴더를 입력합니다. PC의 올바른 설치 디렉토리로 예를 들어 MySQL 버전이 8.0.1인 경우 MySQL Workbench 8.0.1폴더를 대신 사용하세요.
                                                    1. 여기서 .\mysql.exe -u username -h X.X.X.X:XXXX -p를 입력합니다. XXXX:XXXX를 원격 서버 IP 주소 및 포트 번호(예: 100.200.100.200:3306)로, 사용자 이름을 다음과 같은 MySQL 사용자 이름으로 바꿉니다. 원격 액세스를 허용합니다(예: 루트). 화면의 추가 지침을 따르세요.
                                                    2. 비밀번호를 입력하면 로그인 프로세스를 완료하고 원격으로 MySQL 데이터베이스에 액세스할 수 있습니다.
                                                    3. 이 방법이 작동하지 않으면 다음 단계와 -h localhost인수를 사용하여 SSH를 사용하여 MySQL 서버를 호스팅하는 서버 또는 PC에 연결하거나 직접 액세스합니다. 그런 다음 아래 단계에 따라 적절한 사용자 계정을 만들 수 있습니다.

                                                      MySQL 데이터베이스에 대한 원격 사용자 액세스 허용

                                                      이 시점에서 귀하는 서버의 루트 사용자 계정 또는 상승된 권한을 가진 다른 사용자 계정을 사용하여 원격으로 MySQL 서버에 연결할 수 있습니다. 이 수준의 액세스는 안전하지 않으므로 MySQL 데이터베이스에 액세스하기 위해 더 제한된 계정을 만드는 것이 좋습니다.

                                                      이 계정은 MySQL 서버에 대한 액세스가 제한되어 선택한 데이터베이스와만 상호 작용할 수 있습니다. 다른 데이터베이스 데이터 액세스, 새 사용자 계정 생성 등과 같은 더 심각한 변경을 수행할 수 없습니다.

                                                      MySQL 서버에 원격으로 로그인할 수 있는 기능이 있어야 합니다. 루트 계정을 원격으로 사용할 수 없는 경우 원격 SSH 연결을 통해 또는 서버를 호스팅하는 PC 또는 서버에 직접 액세스하여 mysql명령을 사용하여 서버의 셸에 액세스해야 합니다.

                                                      1. 원격 MySQL 셸에서(mysql도구 사용) CREATE USER "username"@"xxxx" IDENTIFIED BY "password"를 입력합니다.Enter를 선택합니다. 사용자 이름을 생성하려는 사용자 이름으로, xxxx연결하려는 IP 주소로, 비밀번호를 적절한 비밀번호로 바꾸십시오.
                                                        1. 새 계정에 필요한 권한을 부여해야 합니다. 이렇게 하려면 GRANT ALL ON 데이터베이스 이름.* TO username@”x.x.x.x”를 입력하십시오.데이터베이스 이름, 사용자 이름,x.x.x.x를 올바른 세부정보로 바꾸십시오. 원하는 경우 databasename*으로 대체하여 모든 데이터베이스에 대한 액세스 권한을 부여합니다.
                                                        2. 액세스 권한이 부여되면 위 섹션의 단계를 사용하여 새 계정을 사용하여 원격으로 서버에 연결합니다(예: mysql -u 사용자 이름 -h XXXX:XXXX -p).

                                                          데이터베이스 데이터 보안

                                                          MySQL 또는 다른 유형의 SQL로 작업하는지 여부 데이터 보안을 유지하려면 연결을 안전하게 유지하는 것이 중요합니다. 이를 수행하는 좋은 방법은 오래된(쉽게 추측할 수 있는) 비밀번호에 의존하는 대신 서버에 원격 액세스를 위한 SSH 키 생성 를 연결하는 것입니다.

                                                          데이터 손실이 걱정된다면 온라인에서 쉽게 데이터베이스 백업 할 수 있습니다. 대부분의 데이터베이스는 Linux 서버를 사용하여 실행됩니다. Linux 파일 백업을 쉽게 자동화 수 있습니다. Windows에서 MySQL을 실행하는 경우 유사한 Windows용 자동 백업 시스템 를 설정하여 비상 시 데이터를 복원할 수 있습니다.

                                                          관련 게시물:


                                                          9.08.2021