MySQL 데이터베이스로 작업하고 있다면 데이터베이스를 안전하게 유지하는 데 직면한 문제를 이미 알고 있을 것입니다. SQL 인젝션을 사용한 데이터베이스 해킹 시도에서 무차별 대입 공격에 이르기까지, 특히 데이터베이스를 원격으로 작업하는 경우 데이터를 안전하게 유지하기 어렵습니다.
원격 연결을 허용하도록 SQL 서버를 구성하는 방법이 있지만 MySQL 서버에서 원격 연결을 허용하면 데이터베이스가 해커의 쉬운 표적이 될 수 있으므로 주의해야 합니다. MySQL 데이터베이스에 대한 안전한 원격 연결을 허용하려면 다음 사항을 알아야 합니다.
시작하기 전에
MySQL 데이터베이스를 변경하기 전에 데이터베이스를 백업하는 것이 중요합니다. , 특히 프로덕션 서버(사용 중인 서버)에서 작업하는 경우. 데이터베이스 또는 이를 호스팅하는 서버를 변경하면 문제가 발생하면 심각한 데이터 손실이 발생할 수 있습니다.
또한 서버 연결이 변경되면 나중에 액세스하지 못할 수도 있습니다. 이 경우 추가 지원을 위해 서버 관리자에게 문의해야 할 수 있습니다. 로컬에서 실행되는 MySQL 서버에서 변경 사항을 시도하여 원격으로 시도하기 전에 변경 사항이 작동하는지 확인하는 것이 좋습니다.
또한 원격 서버를 변경하는 경우 연결하고 변경할 수 있는 안전한 방법이 필요할 수 있습니다. SSH(보안 셸) 원격 서버에 연결할 수 있으므로 이 작업을 수행하는 가장 좋은 방법인 경우가 많습니다. 또한 SSH를 사용하여 Raspberry Pi에서 호스팅되는 서버와 같은 로컬 네트워크의 서버에 연결할 수 있습니다.
이 가이드는 원격 연결을 허용하도록 MySQL을 구성하는 단계를 안내하지만 먼저 MySQL 서버를 호스팅하는 서버에 직접 또는 원격으로 액세스할 수 있는지 확인해야 합니다.
예를 들어 SSH를 통해 서버에 원격으로 액세스할 수 없다고 가정합니다. 이 경우 루트 mySQL 계정이 이미 원격 연결을 허용하지 않는 한 원격 연결을 직접 허용하도록 MySQL 데이터베이스를 구성할 수 없습니다. 따라서 계속하려면 먼저 이 연결을 설정해야 합니다.
MySQL 구성 파일 편집
원격 연결을 허용하도록 MySQL을 구성하는 첫 번째 단계는 MySQL 구성 파일을 편집하는 것입니다. 이 단계까지 이 가이드에서는 mySQL 데이터베이스를 원격으로 호스팅하는 서버, PC 또는 Mac에 이미 연결되어 있고 콘솔 액세스 권한이 있다고 가정합니다.
또는 Mac 또는 Linux의 개방형 터미널 또는 Windows의 텍스트 편집기를 사용하여 로컬 MySQL 서버를 구성할 수 있습니다.
- 시작하려면 선호하는 콘솔 텍스트 편집기를 사용하여 MySQL 데이터베이스 파일을 편집하십시오. Linux의 경우 sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf 를 입력합니다. 나노를 사용하여 이 파일을 편집하려면 터미널 또는 SSH 창으로 편집기(MySQL 데이터베이스가 기본 위치에 있다고 가정).
- Windows를 실행하는 경우 파일 탐색기를 열고 MySQL 설치가 포함된 폴더에 액세스합니다(예:C:/Program Files/MySQL/MySQL Server 8.0 ). my.ini를 엽니다. 항목을 두 번 클릭하여 기본 텍스트 편집기(예:메모장)를 사용하여 파일을 만듭니다. 파일이 없으면 먼저 파일을 만드세요.
위에서 참조한 위치는 MySQL 구성 파일의 기본 위치입니다. 이 명령이 작동하지 않으면 관련 파일(my.cnf , mysqld.cnf , 또는 my.ini ) 수동으로 관련 파일 경로를 찾습니다.
Safe Bind-주소 IP 범위 설정
<올 시작="4">- 현재 인터넷 연결을 사용하는 기기의 연결을 허용하도록 MySQL 데이터베이스를 구성하려면 먼저 공개 IP 주소를 찾은 다음 127.0.0.1을 바꾸세요. 그 IP 주소로. 또는 연결을 허용하려는 장치 또는 서버의 IP 주소로 바꾸십시오.
- 경우에 따라 모든 MySQL 데이터베이스에 대한 원격 연결. 이는 극단적인 위험을 수반합니다. 프로덕션 서버에서 사용하면 안 됩니다. 그러나 이를 허용하려면 127.0.0.1을 대체하십시오. 0.0.0.0 포함 .
- 결합 주소 를 구성한 후 MySQL 구성 파일에 파일을 저장합니다. Linux를 사용하는 경우 Ctrl + O 를 선택하십시오. 및 Ctrl + X 이것을하기 위해. Mac의 경우 Command + O 를 선택하십시오. 및 Command + X . Windows 사용자는 파일 을 선택하여 저장할 수 있습니다.> 저장 .
- 다음으로 Linux 및 Mac 사용자는 mysql.server stop &&mysql.server start 를 입력하여 MySQL을 다시 시작할 수 있습니다. 또는 mysql.server 재시작 . sudo를 사용하여 명령을 상승시켜야 할 수도 있습니다(예:sudo mysql.server restart ) mysql.server 파일에 대한 적절한 경로를 사용합니다(예:/usr/local/bin/mysql.server ).
- 위의 명령이 작동하지 않으면 sudo service mysql restart 를 시도하십시오. 대신.
- Windows에서 MySQL을 다시 시작하려면 시작 메뉴를 마우스 오른쪽 버튼으로 클릭하고 Windows PowerShell(관리자)을 선택하여 새 PowerShell 창을 엽니다. . PowerShell 창에서 net stop mysql80 을 입력합니다. 뒤에 net start mysql80 , mysql80 대체 PC의 올바른 서비스 이름으로
Windows에서 올바른 서비스 이름이 확실하지 않은 경우 net start를 입력합니다. 찾을 수 있습니다. 구성을 다시 로드할 수 없으면 서버를 다시 시작하고 MySQL을 수동으로 다시 로드하십시오(필요한 경우).
방화벽 구성
이 단계에서 MySQL 데이터베이스는 바인드 주소로 설정한 IP 주소를 사용하여 기기에서 원격 연결을 허용해야 합니다. MySQL 구성 파일의 값(또는 이 값을 0.0.0.0으로 설정한 경우 모든 기기에서) 대신에). 그러나 연결은 기기 또는 네트워크 방화벽에 의해 계속 차단됩니다. .
대부분의 서버와 PC는 특정 포트에 대한 액세스가 허용되지 않는 한 방화벽을 사용하여 연결을 차단합니다. 이를 구성하는 단계는 MySQL을 Windows에서 실행하는지 Linux에서 실행하는지에 따라 다릅니다. Mac 방화벽은 기본적으로 비활성화되어 있으므로 여기에서 추가 단계를 완료할 필요가 없습니다.
Linux 방화벽 구성
많은 Linux 서버는 iptables를 사용합니다. 기본 방화벽 유틸리티로. 아래 단계에 따라 구성할 수 있습니다.
- 터미널 또는 SSH 연결을 열고 sudo iptables -A INPUT -p tcp -s X.X.X.X –dport YYYY -j ACCEPT를 입력합니다. . X.X.X.X 바꾸기 에서 MySQL 연결을 허용하려는 기기의 IP 주소 , YYYY 대체 MySQL 구성 파일의 일치하는 포트 값(예:3306 ).
- 방화벽을 일시적으로 구성합니다. Debian 또는 Ubuntu 기반 Linux 서버를 사용하는 경우 sudo netfilter-persistent save를 입력하여 이 변경 사항을 영구적으로 적용합니다. 및 sudo netfilter-persistent reload 터미널 또는 SSH 창으로 이동합니다.
iptables가 Linux 배포판의 기본 방화벽 도구가 아닌 경우 배포판의 사용자 설명서에서 자세한 내용을 참조해야 합니다. 특정 패키지(예:netfilter-persistent )을 사용할 수 없는 경우 배포의 소프트웨어 저장소 도구를 사용하여 설치합니다(예:sudo apt install netfilter-persistent). ).
Windows 방화벽 구성
Windows PC 또는 서버를 사용하여 데이터베이스를 호스팅하는 경우 다음 단계를 사용하여 방화벽을 구성할 수 있습니다.
- 시작 메뉴를 마우스 오른쪽 버튼으로 클릭하고 실행을 선택합니다. .
- 실행 상자에 wf.msc를 입력합니다. 확인을 선택합니다. .
- 다음 메뉴에서 TCP를 선택합니다. 옵션에서 3306 을 입력합니다. (또는 MySQL 구성 파일에 나열된 포트 값)을 선택한 후 다음을 선택합니다. .
- 작업에서 메뉴에서 기본 옵션인 연결 허용을 그대로 둡니다. 활성화한 후 다음을 선택합니다. .
- 규칙을 설명하는 이름을 입력합니다(예:MySQL ) 제공된 포트에서 마침을 선택합니다. 방화벽 규칙 목록에 추가합니다.
연결하는 데 문제가 있으면 위의 단계를 반복하여 새 발신 규칙 을 만드십시오. 동일한 세부 정보(포트 3306 등)를 사용하여 방화벽 설정에서 또한 데이터베이스에 대한 인바운드 및 아웃바운드 연결을 허용하기 위해 필요한 차단된 포트를 열도록 로컬 네트워크 라우터를 구성해야 할 수도 있습니다.
MySQL을 사용하여 원격 서버에 연결
원격 연결을 허용하도록 MySQL 데이터베이스를 구성한 후에는 실제로 연결을 설정해야 합니다. mysql을 사용하여 이 작업을 수행할 수 있습니다. 명령(mysql.exe Windows) 터미널 또는 PowerShell 창에서.
Windows를 실행하는 경우 시작하기 전에 MySQL이 로컬에 설치되어 있는지 확인해야 합니다. Mac 사용자는 터미널에서 homebrew를 사용하여 MySQL을 설치할 수 있습니다(brew install mysql ), Linux 사용자는 로컬 앱 저장소(예:sudo apt install mysql)를 사용할 수 있습니다. ) 필요한 패키지를 설치합니다.
Linux 또는 Mac에서 MySQL에 연결
- Mac 또는 Linux에서 원격 MySQL 서버에 연결하려면 새 터미널 창을 열고 mysql -u username -h X.X.X.X:XXXX -p를 입력합니다. . X.X.X.X:XXXX 바꾸기 원격 서버 IP 주소 및 포트 번호(예:100.200.100.200:3306 ) 및 사용자 이름 MySQL 사용자 이름으로.
- 메시지가 표시되면 비밀번호를 확인합니다. 연결에 성공하면 터미널에 성공 메시지가 나타납니다.
Windows에서 MySQL에 연결
- Windows에서 원격 MySQL 서버에 연결하려면 시작 메뉴를 마우스 오른쪽 버튼으로 클릭하고 Windows PowerShell(관리자)을 선택하여 새 PowerShell 창을 엽니다. .
- 새 PowerShell 창에서 cd “C:\Program Files\MySQL\MySQL Workbench 8.0\을 입력합니다. "를 눌러 올바른 폴더를 입력하고 이 디렉터리를 PC의 올바른 설치 디렉터리로 바꿉니다. 예를 들어 MySQL 버전이 8.0.1인 경우 MySQL Workbench 8.0.1을 사용하세요. 폴더 대신.
이것이 작동하지 않으면 다음 단계를 사용하고 -h localhost를 사용하여 SSH를 사용하여 MySQL 서버를 호스팅하는 서버 또는 PC에 연결(또는 직접 액세스)합니다. 논쟁. 그런 다음 아래 단계에 따라 적절한 사용자 계정을 만들 수 있습니다.
MySQL 데이터베이스에 대한 원격 사용자 액세스 허용
이 시점에서 서버의 루트 사용자 계정 또는 상승된 권한을 가진 다른 사용자 계정을 사용하여 원격으로 MySQL 서버에 연결할 수 있어야 합니다. As this level of access is unsafe, you may prefer to create a more restricted account for accessing your MySQL database.
This account will have limited access to your MySQL server, allowing it to interact with only selected databases. It won’t be able to make more serious changes, such as accessing other database data, creating new user accounts, etc.
You’ll need to have the ability to sign into your MySQL server remotely. If you can’t use your root account remotely, you’ll need to access your server’s shell using the mysql command via a remote SSH connection or by directly accessing the PC or server hosting the server.
- In your remote MySQL shell (using the mysql tool), type CREATE USER “username”@”x.x.x.x” IDENTIFIED BY “password”; Enter를 선택합니다. . Replace username with the username you wish to create, x.x.x.x with the IP address you wish to connect from, and password with a suitable password.
- You’ll need to grant your new account with the necessary permissions. To do this, type GRANT ALL ON databasename.* TO username@”x.x.x.x”; and replace databasename, username, and x.x.x.x with the correct details. If you wish to, replace databasename with * to grant it access to all databases.
With access granted, use the steps in the section above to connect to your server remotely using your new account (eg. mysql -u username -h X.X.X.X:XXXX -p ).
Securing Your Database Data
Whether you’re working with MySQL or another type of SQL database, it’s important to keep your connections secure to maintain your data security. A good way to do this is to generate SSH keys for remote access to your server, rather than relying on outdated (and easily guessable) passwords.
If you’re worried about data loss, you can easily back up your database online. Most databases are run using Linux servers—you can automate a Linux file backup easily. If you’re running MySQL on Windows, you can set up a similar automatic backup system for Windows, allowing you to restore your data in an emergency.