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

MySQL 데이터베이스(MySQL database) 로 작업하는 경우 데이터베이스를 안전하게 유지하는 데 직면한 문제를 이미 알고 있을 것입니다. SQL 인젝션을 사용한 데이터베이스 해킹 시도 에서 무차별 대입 공격에 이르기까지, 특히 데이터베이스를 원격으로 작업하는 경우 데이터를 안전하게 유지하기 어렵습니다.

원격 연결을 허용하도록 SQL(SQL) 서버 를 구성하는 방법이 있지만 MySQL 서버 에서 원격 연결을 허용하면 데이터베이스가 해커의 쉬운 표적이 될 수 있으므로 주의해야 합니다. MySQL 데이터베이스 에 대한 안전한 원격 연결을 허용 하려면 다음을 알아야 합니다.

시작하기 전에(Before You Begin)

MySQL 데이터베이스 를 변경하기 전에 특히 프로덕션 서버(사용 중인 서버)에서 작업하는 경우 데이터베이스를 백업(backup your database) 하는 것이 중요합니다 . 데이터베이스 또는 이를 호스팅하는 서버에 대한 변경 사항은 문제가 발생하면 심각한 데이터 손실을 초래할 수 있습니다.

또한 서버 연결을 변경하면 나중에 서버에 액세스하지 못할 수도 있습니다. 이 경우 추가 지원을 위해 서버 관리자에게 문의해야 할 수 있습니다. 좋은 아이디어는 로컬에서 실행되는 MySQL 서버에서 변경 사항을 시도하여 원격으로 시도하기 전에 변경 사항이 작동하는지 확인하는 것입니다.

또한 원격 서버를 변경하는 경우 연결하고 변경할 수 있는 안전한 방법이 필요할 수 있습니다. SSH(Secure Shell) 는 원격 서버에 연결할 수 있기 때문에 이를 수행하는 가장 좋은 방법인 경우가 많습니다. 또한 SSH 를 사용 (SSH)하여 Raspberry Pi에서 호스팅되는(hosted on a Raspberry Pi) 서버와 같은 로컬 네트워크의 서버에 연결할 수 있습니다 .

이 가이드는 원격 연결을 허용하도록 MySQL(MySQL) 을 구성하는 단계를 안내 하지만 먼저 MySQL 서버 를 호스팅하는 서버에 직접 또는 원격 액세스 권한이 있는지 확인해야 합니다 .

(Suppose)예를 들어 SSH(SSH) 를 통해 서버에 원격으로 액세스할 수 없다고 가정 합니다 . 이 경우 루트 mySQL 계정이 이미 원격 연결을 허용하지 않는 한 원격 연결을 직접 허용하도록 MySQL 데이터베이스를 구성할 수 없습니다 . 따라서 계속하기 전에 먼저 이 연결을 설정해야 합니다.

MySQL 구성 파일 편집(Editing Your MySQL Configuration File)

원격 연결을 허용 하도록 MySQL 을 구성하는 첫 번째 단계는 MySQL 구성 파일을 편집하는 것입니다. 이 단계까지 이 가이드에서는 mySQL 데이터베이스를 원격으로 호스팅  하는 서버, PC 또는 Mac 에 이미 연결되어 있고 콘솔 액세스 권한이 있다고 가정합니다.(Mac)

또는 Mac(Mac) 또는 Linux 의 개방형 터미널 또는 Windows 의 텍스트 편집기를 사용하여 로컬 MySQL 서버를 구성할 수 있습니다 .

  1. 시작하려면 선호하는 콘솔 텍스트 편집기를 사용하여 MySQL 데이터베이스 파일을 편집하십시오. Linux 에서 터미널 또는 SSH 창에 sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf를 입력하여 nano 편집기를 사용하여 이 파일을 편집합니다 ( sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf 데이터베이스 (nano) 기본 위치(MySQL) 에 있다고 가정)

  1. Windows 를 실행 중인 경우 파일 탐색기(File Explorer) 를 열고 MySQL 설치 가 포함된 폴더에 액세스 합니다(예 C:/Program Files/MySQL/MySQL Server 8.0 ). 기본 텍스트 편집기(예: 메모장(Notepad) )를 사용하여 항목을 두 번 클릭하여 my.ini 파일을 엽니다 . 파일 이 없으면 먼저 파일을 만듭니다(create the file first) .

  1. Mac 에서 터미널 창을 열고 sudo nano /usr/local/etc/my.cnf 를 입력 합니다. homebrew 를 사용하여 (using homebrew)MySQL 을 설치한 경우 MySQL 의 기본 구성 파일입니다 .

위에서 참조한 위치는 MySQL 구성 파일의 기본 위치입니다. 이러한 명령이 작동하지 않으면 관련 파일 경로를 찾기 위해 관련 파일( my.cnf , mysqld.cnf 또는 my.ini )을 수동으로 검색해야 합니다.

Safe Bind-Address IP 범위 설정(Setting a Safe Bind-Address IP Range)

  1. 서버용 MySQL 구성 파일을 연 후에는 키보드의 화살표 키를 사용하여 파일의 bind-address 섹션에 도달하십시오. 이 IP 범위는 일반적으로 127.0.0.1(127.0.0.1) 을 사용하는 로컬 시스템 또는 서버의 연결만 허용하도록 설정되는 데이터베이스에 대한 연결을 제한합니다 .

  1. 현재 인터넷 연결을 사용하는 장치에서 연결을 허용하도록 MySQL 데이터베이스 를 구성하려면 먼저 공용 IP 주소 를 찾은 다음 (find your public IP address)127.0.0.1 을 해당 IP 주소 로 바꾸 십시오. 또는 연결을 허용하려는 장치 또는 서버의 IP 주소로 바꾸십시오.

  1. 어떤 경우에는 MySQL(MySQL) 데이터베이스 에 대한 모든(all) 원격 연결을 허용하고자 할 수 있습니다. 이것은 극도의 위험(extreme risk) 을 수반하며 프로덕션 서버에서 사용해서는 안됩니다. 그러나 이를 허용하려면 127.0.0.10.0.0.0 으로 바꾸 십시오.

  1. 기본 설정(Basic Settings) 섹션 의 포트(port ) 값을 기록해 둡니다 . 이것은 다음 섹션에서 필요합니다. 표시되지 않으면 기본값인 포트 3306 이 사용됩니다 . 새 줄에 port = xxxxxxxx 를 적절한 포트 값으로 교체 하여 고유한 포트를 추가할 수 있습니다 .

  1. MySQL 구성 파일 에서 bind-address 를 구성했으면 파일을 저장합니다. Linux 를 사용하는 경우 Ctrl + O Ctrl + X 를 선택 하여 이 작업을 수행합니다. Mac에서는 Command + O Command + X 를 선택 합니다. Windows 사용자는 파일(File ) > 저장(Save) 을 선택하여 저장할 수 있습니다 .

  1. 다음으로 LinuxMac 사용자는 mysql.server stop && mysql.server start 또는 mysql.server restart 를 입력하여 MySQL 을 다시 시작할 수 있습니다 . sudo(using sudo) (예: sudo mysql.server restart )를 사용 하여 명령을 상승시키고 mysql.server 파일에 대한 적절한 경로(예: /usr/local/bin/mysql.server )를 사용해야 할 수도 있습니다.

  1.  위의 명령이 작동하지 않으면 sudo service mysql restart 를 대신 시도하십시오.

  1. Windows 에서 (Windows)MySQL 을 다시 시작하려면 시작(Start) 메뉴 를 마우스 오른쪽 버튼으로 클릭하고 Windows PowerShell(Admin) 을 선택하여 새 PowerShell 창을 엽니다 . PowerShell 창에서 net stop mysql80 다음에 net start mysql80 을 입력하고 mysql80 을 PC의 올바른 서비스 이름으로 바꿉니다.

Windows 에서 올바른 서비스 이름이 확실하지 않은 경우 net start 를 입력 하여 찾습니다. 구성을 다시 로드할 수 없으면 서버를 다시 시작하고 대신 MySQL 을 수동으로 다시 로드하십시오(필요한 경우).

방화벽 구성(Configuring Your Firewalls)

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

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

Linux 방화벽 구성(Configure Linux Firewalls)

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

  1. 터미널 또는 SSH 연결을 열고 sudo iptables -A INPUT -p tcp -s XXXX –dport YYYY -j ACCEPT 를 입력 합니다. XXXX 를 에서 (X.X.X.X)MySQL 연결 (from) 허용하려는 장치의 IP 주소로 바꾸고 YYYY 를 (YYYY )MySQL 구성 파일 의 일치하는 포트 값 (예: 3306 ) 으로 바꿉니다 .

  1. 이렇게 하면 방화벽이 임시로 구성됩니다. Debian 또는 Ubuntu 기반 Linux 서버를 사용 하는 경우 터미널 또는 SSH 창에 sudo netfilter-persistent savesudo netfilter-persistent reload 를 입력하여 이 변경 사항을 영구적으로 적용합니다.(sudo netfilter-persistent reload )

iptables가 Linux(Linux) 배포판 의 기본 방화벽 도구가 아닌 경우 자세한 내용은 배포판의 사용 설명서를 참조해야 합니다. 특정 패키지(예: netfilter-persistent )를 사용할 수 없는 경우 배포의 소프트웨어 저장소 도구를 사용하여 설치합니다(예: sudo apt install netfilter-persistent ).

Windows 방화벽 구성(Configure Windows Firewalls)

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

  1. (Right-click)시작(Start) 메뉴를 마우스 오른쪽 버튼으로 클릭 하고 실행(Run) 을 선택 합니다.

  1. 실행(Run) 상자에 wf.msc를 입력 하고 확인(wf.msc) 을 선택 합니다(OK) .

  1. Windows Defender 창에서 인바운드 규칙(Inbound Rules ) > 새 규칙(New Rule) 을 선택 합니다 .

  1. 새 인바운드 규칙 마법사(New Inbound Rule Wizard) 창에서 포트(Port ) > 다음(Next) 을 선택 합니다 .

  1. 다음 메뉴 의 옵션에서 TCP 를 선택하고 (TCP)3306 (또는 (3306 )MySQL 구성 파일 에 나열된 포트 값 )을 입력한 후 다음(Next) 을 선택 합니다.

  1. 작업(Action) 메뉴에서 기본 옵션인 연결 허용을 활성화한 상태로 두고 다음 (Allow the connection)선택(Next) 합니다 .

  1. 규칙을 모든 네트워크 유형에 적용할 것인지 확인한 후 다음 을 선택 합니다(Next)

  1. 제공된 포트에 규칙을 설명하는 이름(예: MySQL )을 입력한 다음 (MySQL)마침(Finish) 을 선택하여 방화벽 규칙 목록에 추가합니다.

연결하는 데 문제가 있는 경우 위의 단계를 반복 하고 동일한 세부 정보(포트 3306 등)를 사용하여 방화벽 설정에서 새 아웃바운드 규칙 을 생성해야 합니다. (outbound rule )또한 데이터베이스에 대한 인바운드 및 아웃바운드 연결을 허용하기 위해  필요한 차단된 포트를 열도록(open the necessary blocked ports) 로컬 네트워크 라우터를 구성해야 할 수도 있습니다 .

MySQL을 사용하여 원격 서버에 연결(Connecting to a Remote Server Using MySQL)

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

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

Linux 또는 Mac에서 MySQL에 연결(Connecting to MySQL on Linux or Mac)

  1. Mac 또는 Linux 에서 원격 (Linux)MySQL 서버에 연결하려면 새 터미널 창을 열고 mysql -u username -h XXXX:XXXX -p 를 입력 합니다. XXXX:XXXX 를 원격 서버 IP 주소와 포트 번호(예: 100.200.100.200:3306 )로, 사용자 이름(username) 을 MySQL 사용자 이름으로 바꾸십시오 .(100.200.100.200:3306)

  1. 메시지가 표시되면 암호를 확인합니다. 연결에 성공하면 터미널에 성공 메시지가 나타납니다.

Windows에서 MySQL에 연결(Connecting to MySQL on Windows)

  1. Windows 에서 원격 MySQL 서버에 연결하려면 시작(Start) 메뉴 를 마우스 오른쪽 버튼으로 클릭하고 Windows PowerShell(Admin) 을 선택하여 새 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 )로, 사용자(username) 이름을 원격 액세스를 허용 하는 MySQL 사용자 이름(예: (MySQL)root )으로 (root)바꾸십시오(100.200.100.200:3306) . 추가 화면 지침을 따릅니다 .(Follow)
  2. 메시지가 표시되면 비밀번호를 제공하여 로그인 프로세스를 완료하고 MySQL 데이터베이스에 원격으로 액세스합니다.

이것이 작동하지 않으면 다음 단계와 -h localhost 인수 를 사용하여 SSH 를 사용하여 (SSH)MySQL 서버를 호스팅하는 서버 또는 PC에 연결(또는 직접 액세스)합니다. 그런 다음 아래 단계에 따라 적절한 사용자 계정을 만들 수 있습니다.

MySQL 데이터베이스에 대한 원격 사용자 액세스 허용(Allowing Remote User Access to a MySQL Database)

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

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

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

  1. 원격 MySQL 셸에서( mysql 도구 사용) CREATE USER “username”@”x.x.x.x” IDENTIFIED BY “password”; 입력(Enter) 을 선택 합니다. 사용자 이름을 생성하려는 사용자 이름으로, xxxx(username ) 를 연결하려는 IP 주소로, 암호(password) 를 적절한 암호로 바꾸십시오 .(x.x.x.x )

  1. 새 계정에 필요한 권한을 부여해야 합니다. 이렇게 하려면 GRANT ALL ON databasename.* TO username@”x.x.x.x”; 데이터베이스 이름, 사용자 이름(databasename, username, )xxxx  를 올바른 세부 정보로 바꿉니다 . 원하는 경우 모든 데이터베이스에 대한 액세스 권한을 부여하려면  databasename* 로 바꾸 십시오.

액세스 권한이 부여된 상태에서 위 섹션의 단계를 사용하여 새 계정(예: mysql -u username -h XXXX:XXXX -p )을 사용하여 원격으로 서버에 연결합니다.

데이터베이스 데이터 보안(Securing Your Database Data)

MySQL 을 사용하든 다른 유형의 SQL 데이터베이스로 작업하든 관계없이 데이터 보안을 유지하려면 연결을 안전하게 유지하는 것이 중요합니다. 이를 수행하는 좋은 방법은 오래된(쉽게 추측할 수 있는) 암호에 의존하는 대신 서버에 대한 원격 액세스를 위한 SSH 키를 생성 하는 것입니다.(generate SSH keys for remote access)

데이터 손실이 걱정된다면 데이터베이스를 온라인으로 쉽게 백업 할 수 있습니다. (back up your database)대부분의 데이터베이스는 Linux 서버 를 사용하여 실행되므로 Linux 파일 백업을 쉽게 자동화(automate a Linux file backup easily) 할 수 있습니다 . Windows 에서 (Windows)MySQL 을 실행하는 경우 유사한 Windows용 자동 백업 시스템을(automatic backup system for Windows) 설정 하여 긴급 상황에서 데이터를 복원할 수 있습니다.



About the author

안녕! 제 이름은 하드웨어 해커입니다. 저는 10년 이상의 컴퓨터 수리 및 개조 경험이 있습니다. 노트북에서 태블릿, 스마트 TV에 이르기까지 거의 모든 것을 고칠 수 있습니다. 내 기술을 통해 고객이 문제를 빠르고 효율적으로 해결하도록 도울 수 있습니다. 내 블로그는 사람들이 올바른 도구를 사용하여 컴퓨터와 가전제품을 수리하는 방법을 배울 수 있도록 돕는 데 전념하고 있습니다. 그리고 내 Facebook 페이지는 컴퓨터와 관련된 모든 것에 대한 팁, 트릭 및 통찰력을 공유하는 곳입니다!



Related posts