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 서버를 구성할 수 있습니다 .
- 시작하려면 선호하는 콘솔 텍스트 편집기를 사용하여 MySQL 데이터베이스 파일을 편집하십시오. Linux 에서 터미널 또는 SSH 창에 sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf를 입력하여 nano 편집기를 사용하여 이 파일을 편집합니다 ( sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf 데이터베이스 가(nano) 기본 위치(MySQL) 에 있다고 가정) .
- Windows 를 실행 중인 경우 파일 탐색기(File Explorer) 를 열고 MySQL 설치 가 포함된 폴더에 액세스 합니다(예 C:/Program Files/MySQL/MySQL Server 8.0 ). 기본 텍스트 편집기(예: 메모장(Notepad) )를 사용하여 항목을 두 번 클릭하여 my.ini 파일을 엽니다 . 파일 이 없으면 먼저 파일을 만듭니다(create the file first) .
- 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)
- 서버용 MySQL 구성 파일을 연 후에는 키보드의 화살표 키를 사용하여 파일의 bind-address 섹션에 도달하십시오. 이 IP 범위는 일반적으로 127.0.0.1(127.0.0.1) 을 사용하는 로컬 시스템 또는 서버의 연결만 허용하도록 설정되는 데이터베이스에 대한 연결을 제한합니다 .
- 현재 인터넷 연결을 사용하는 장치에서 연결을 허용하도록 MySQL 데이터베이스 를 구성하려면 먼저 공용 IP 주소 를 찾은 다음 (find your public IP address)127.0.0.1 을 해당 IP 주소 로 바꾸 십시오. 또는 연결을 허용하려는 장치 또는 서버의 IP 주소로 바꾸십시오.
- 어떤 경우에는 MySQL(MySQL) 데이터베이스 에 대한 모든(all) 원격 연결을 허용하고자 할 수 있습니다. 이것은 극도의 위험(extreme risk) 을 수반하며 프로덕션 서버에서 사용해서는 안됩니다. 그러나 이를 허용하려면 127.0.0.1 을 0.0.0.0 으로 바꾸 십시오.
- 기본 설정(Basic Settings) 섹션 의 포트(port ) 값을 기록해 둡니다 . 이것은 다음 섹션에서 필요합니다. 표시되지 않으면 기본값인 포트 3306 이 사용됩니다 . 새 줄에 port = xxxxxxxx 를 적절한 포트 값으로 교체 하여 고유한 포트를 추가할 수 있습니다 .
- MySQL 구성 파일 에서 bind-address 를 구성했으면 파일을 저장합니다. Linux 를 사용하는 경우 Ctrl + O 및 Ctrl + X 를 선택 하여 이 작업을 수행합니다. Mac에서는 Command + O 및 Command + X 를 선택 합니다. Windows 사용자는 파일(File ) > 저장(Save) 을 선택하여 저장할 수 있습니다 .
- 다음으로 Linux 및 Mac 사용자는 mysql.server stop && mysql.server start 또는 mysql.server restart 를 입력하여 MySQL 을 다시 시작할 수 있습니다 . sudo(using sudo) (예: sudo mysql.server restart )를 사용 하여 명령을 상승시키고 mysql.server 파일에 대한 적절한 경로(예: /usr/local/bin/mysql.server )를 사용해야 할 수도 있습니다.
- 위의 명령이 작동하지 않으면 sudo service mysql restart 를 대신 시도하십시오.
- 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 를 기본 방화벽 유틸리티로 사용합니다. 아래 단계에 따라 구성할 수 있습니다.
- 터미널 또는 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 ) 으로 바꿉니다 .
- 이렇게 하면 방화벽이 임시로 구성됩니다. Debian 또는 Ubuntu 기반 Linux 서버를 사용 하는 경우 터미널 또는 SSH 창에 sudo netfilter-persistent save 및 sudo netfilter-persistent reload 를 입력하여 이 변경 사항을 영구적으로 적용합니다.(sudo netfilter-persistent reload )
iptables가 Linux(Linux) 배포판 의 기본 방화벽 도구가 아닌 경우 자세한 내용은 배포판의 사용 설명서를 참조해야 합니다. 특정 패키지(예: netfilter-persistent )를 사용할 수 없는 경우 배포의 소프트웨어 저장소 도구를 사용하여 설치합니다(예: sudo apt install netfilter-persistent ).
Windows 방화벽 구성(Configure Windows Firewalls)
Windows PC 또는 서버를 사용하여 데이터베이스를 호스팅하는 경우 다음 단계를 사용하여 방화벽을 구성할 수 있습니다.
- (Right-click)시작(Start) 메뉴를 마우스 오른쪽 버튼으로 클릭 하고 실행(Run) 을 선택 합니다.
- 실행(Run) 상자에 wf.msc를 입력 하고 확인(wf.msc) 을 선택 합니다(OK) .
- Windows Defender 창에서 인바운드 규칙(Inbound Rules ) > 새 규칙(New Rule) 을 선택 합니다 .
- 새 인바운드 규칙 마법사(New Inbound Rule Wizard) 창에서 포트(Port ) > 다음(Next) 을 선택 합니다 .
- 다음 메뉴 의 옵션에서 TCP 를 선택하고 (TCP)3306 (또는 (3306 )MySQL 구성 파일 에 나열된 포트 값 )을 입력한 후 다음(Next) 을 선택 합니다.
- 작업(Action) 메뉴에서 기본 옵션인 연결 허용을 활성화한 상태로 두고 다음 을 (Allow the connection)선택(Next) 합니다 .
- 규칙을 모든 네트워크 유형에 적용할 것인지 확인한 후 다음 을 선택 합니다(Next) .
- 제공된 포트에 규칙을 설명하는 이름(예: 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)
- 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)
- 메시지가 표시되면 암호를 확인합니다. 연결에 성공하면 터미널에 성공 메시지가 나타납니다.
Windows에서 MySQL에 연결(Connecting to MySQL on Windows)
- Windows 에서 원격 MySQL 서버에 연결하려면 시작(Start) 메뉴 를 마우스 오른쪽 버튼으로 클릭하고 Windows PowerShell(Admin) 을 선택하여 새 PowerShell 창을 엽니다 .
- 새 PowerShell 창에서 cd “C:\Program Files\MySQL\MySQL Workbench 8.0\ "을 입력하여 올바른 폴더를 입력하고 이 디렉터리를 PC의 올바른 설치 디렉터리로 바꿉니다. 예를 들어, MySQL 버전 이 8.0.1인 경우 대신 MySQL Workbench 8.0.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)
- 메시지가 표시되면 비밀번호를 제공하여 로그인 프로세스를 완료하고 MySQL 데이터베이스에 원격으로 액세스합니다.
이것이 작동하지 않으면 다음 단계와 -h localhost 인수 를 사용하여 SSH 를 사용하여 (SSH)MySQL 서버를 호스팅하는 서버 또는 PC에 연결(또는 직접 액세스)합니다. 그런 다음 아래 단계에 따라 적절한 사용자 계정을 만들 수 있습니다.
MySQL 데이터베이스에 대한 원격 사용자 액세스 허용(Allowing Remote User Access to a MySQL Database)
이 시점에서 서버의 루트 사용자 계정 또는 상승된 권한을 가진 다른 사용자 계정을 사용하여 원격으로 MySQL 서버 에 연결할 수 있어야 합니다 . 이 수준의 액세스는 안전하지 않으므로 MySQL 데이터베이스에 액세스하기 위해 더 제한된 계정을 만드는 것이 좋습니다.
이 계정은 MySQL 서버에 대한 액세스가 제한되어 선택한 데이터베이스와만 상호 작용할 수 있습니다. 다른 데이터베이스 데이터 액세스, 새 사용자 계정 생성 등과 같은 더 심각한 변경을 수행할 수 없습니다.
원격으로 MySQL 서버 에 로그인할 수 있어야 합니다 . 루트 계정을 원격으로 사용할 수 없는 경우 원격 SSH 연결을 통해 (SSH)mysql 명령을 사용 하거나 서버를 호스팅하는 PC 또는 서버에 직접 액세스하여 서버의 셸에 액세스해야 합니다.
- 원격 MySQL 셸에서( mysql 도구 사용) CREATE USER “username”@”x.x.x.x” IDENTIFIED BY “password”; 입력(Enter) 을 선택 합니다. 사용자 이름을 생성하려는 사용자 이름으로, xxxx(username ) 를 연결하려는 IP 주소로, 암호(password) 를 적절한 암호로 바꾸십시오 .(x.x.x.x )
- 새 계정에 필요한 권한을 부여해야 합니다. 이렇게 하려면 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) 설정 하여 긴급 상황에서 데이터를 복원할 수 있습니다.
How to Allow Remote Connections to MySQL
If уou’re working with a MySQL database, then you’re already aware of the challenges you face in keeping your database secure. From database hacking attempts using SQL injections to brute force attacks, it’s difficult to keep your data safe, especially if you’re working with a database remotely.
There are ways to configure an SQL server to allow remote connections, but you need to be careful, as allowing remote connections on a MySQL server can make your database an easy target for hackers. If you want to allow secure, remote connections to a MySQL database, here’s what you’ll need to know.
Before You Begin
Before you make any changes to your MySQL database, it’s important that you backup your database, especially if you’re working on a production server (a server in active use). Any changes you make to your database, or the server hosting it, could result in serious data loss if something goes wrong.
You may also find that changes to your server’s connections may prevent you from accessing it afterward. If this happens, you may need to consult with a server administrator for further support. A good idea is to trial any changes on a locally-run MySQL server to check if your changes work before trying them remotely.
It’s also likely that if you’re making changes to a remote server, you’ll need a safe way to connect and make changes. SSH (Secure Shell) is often the best way to do this, as it allows you to connect to your remote server. You can also use SSH to connect to servers on your local network, such as those hosted on a Raspberry Pi.
This guide will lead you through the steps to configuring MySQL to allow remote connections, but you’ll need to ensure you have direct or remote access to the server hosting your MySQL server first.
Suppose you don’t have remote access to your server via SSH (for example). In that case, you won’t be able to configure your MySQL database to allow remote connections directly unless your root mySQL account already allows remote connections. So, you will need to establish this connection first before you can proceed.
Editing Your MySQL Configuration File
The first step in configuring MySQL to allow remote connections is to edit your MySQL configuration file. By this stage, this guide will assume you have already connected to the server, PC, or Mac hosting your mySQL database remotely and have console access.
Alternatively, you can configure a local MySQL server using an open terminal on Mac or Linux or a text editor on Windows.
- To start, use your preferred console text editor to edit your MySQL database file. On Linux, type sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf into a terminal or SSH window to edit this file using the nano editor (assuming your MySQL database is in the default location).
- If you’re running Windows, open File Explorer and access the folder containing your MySQL installation (eg. C:/Program Files/MySQL/MySQL Server 8.0). Open the my.ini file using your default text editor (eg. Notepad) by double-clicking the entry. If it isn’t there, create the file first.
- On Mac, open a terminal window and type sudo nano /usr/local/etc/my.cnf. This is the default configuration file for MySQL if you’ve installed MySQL using homebrew.
The locations referenced above are the default locations for MySQL configuration files. If these commands don’t work, you’ll need to search for the relevant files (my.cnf, mysqld.cnf, or my.ini) manually to locate the relevant file path.
Setting a Safe Bind-Address IP Range
- Once you’ve opened the MySQL configuration file for your server, use your keyboard’s arrow key to reach the bind-address section of the file. This IP range limits the connections to your database, which is typically set to only allow connections from the local machine or server using 127.0.0.1.
- If you want to configure your MySQL database to allow connections from devices using your current internet connection, find your public IP address first, then replace 127.0.0.1 with that IP address. Alternatively, replace it with an IP address for the device or server you wish to allow connections from.
- In some circumstances, you may wish to allow all remote connections to a MySQL database. This carries extreme risk and shouldn’t be used on a production server. If you want to allow this, however, replace 127.0.0.1 with 0.0.0.0.
- Make note of the port value in the Basic Settings section. This will be required in the next section. If it isn’t visible, the default value will be used, which is port 3306. You can add your own port by typing port = xxxx on a new line, replacing xxxx with a suitable port value.
- Once you’ve configured the bind-address in your MySQL configuration file, save the file. If you’re on Linux, select Ctrl + O and Ctrl + X to do this. On Mac, select Command + O and Command + X. Windows users can save by selecting File > Save.
- Next, Linux and Mac users can restart MySQL by typing mysql.server stop && mysql.server start or mysql.server restart. You may need to elevate the command using sudo (eg. sudo mysql.server restart) and use the appropriate path to the mysql.server file (eg. /usr/local/bin/mysql.server).
- If the above command doesn’t work, try sudo service mysql restart instead.
- To restart MySQL on Windows, open a new PowerShell window by right-clicking the Start menu and selecting Windows PowerShell (Admin). In the PowerShell window, type net stop mysql80 followed by net start mysql80, replacing mysql80 with the correct service name on your PC.
If you’re unsure of the correct service name on Windows, type net start to find it. If you can’t reload your configuration, restart your server and reload MySQL manually (if necessary) instead.
Configuring Your Firewalls
At this stage, your MySQL database should allow remote connections from devices using the IP address you set as the bind-address value in your MySQL configuration file (or from all devices if you set this value to 0.0.0.0 instead). However, connections will still be blocked by your device or network firewall.
Most servers and PCs use a firewall to block connections unless access to a specific port is granted. The steps to configure this will vary, depending on whether you’re running MySQL on Windows or Linux. Mac firewalls are disabled by default, so you shouldn’t need to complete any additional steps here.
Configure Linux Firewalls
Many Linux servers use iptables as the default firewall utility. You can configure it by following the steps below.
- Open a terminal or SSH connection and type sudo iptables -A INPUT -p tcp -s X.X.X.X –dport YYYY -j ACCEPT. Replace X.X.X.X with the IP address for the device you wish to allow MySQL connections from, and replace YYYY with the matching port value from your MySQL configuration file (eg. 3306).
- This will configure the firewall temporarily. If you’re using a Debian or Ubuntu-based Linux server, make this change permanent by typing sudo netfilter-persistent save and sudo netfilter-persistent reload into the terminal or SSH window.
If iptables isn’t the default firewall tool for your Linux distribution, you’ll need to consult your distribution’s user manual for more information. If certain packages (such as netfilter-persistent) are unavailable, use your distribution’s software repository tool to install it (eg. sudo apt install netfilter-persistent).
Configure Windows Firewalls
If you’re using a Windows PC or server to host your database, you can configure your firewall using these steps:
- Right-click the Start menu and select Run.
- In the Run box, type wf.msc and select OK.
- In the Windows Defender window, select Inbound Rules > New Rule.
- In the New Inbound Rule Wizard window, select Port > Next.
- At the next menu, select TCP from the options, type 3306 (or whichever port value is listed in your MySQL configuration file), then select Next.
- At the Action menu, leave the default option to Allow the connection enabled, then select Next.
- Confirm that you want the rule to apply to all network types, then select Next.
- Type a descriptive name for the rule (eg. MySQL) in the port provided, then select Finish to add it to your list of firewall rules.
If you have trouble connecting, repeat these steps above, making sure to create a new outbound rule in your firewall settings using the same details (port 3306, etc). You may also need to configure your local network router to open the necessary blocked ports to allow inbound and outbound connections to your database.
Connecting to a Remote Server Using MySQL
After configuring your MySQL database to allow remote connections, you’ll need to actually establish a connection to it. You can do this using the mysql command (mysql.exe on Windows) from a terminal or PowerShell window.
If you’re running Windows, you will need to make sure that MySQL is installed locally before you begin. Mac users can install MySQL using homebrew from the terminal (brew install mysql), while Linux users can use their local app repository (eg. sudo apt install mysql) to install the necessary packages.
Connecting to MySQL on Linux or Mac
- To connect to your remote MySQL server on Mac or Linux, open a new terminal window and type mysql -u username -h X.X.X.X:XXXX -p. Replace X.X.X.X:XXXX with your remote server IP address and port number (eg. 100.200.100.200:3306) and username with your MySQL username.
- When prompted, confirm your password. If the connection is successful, a success message will appear in the terminal.
Connecting to MySQL on Windows
- To connect to a remote MySQL server on Windows, open a new PowerShell window by right-clicking the Start menu and selecting Windows PowerShell (Admin).
- In the new PowerShell window, type cd “C:\Program Files\MySQL\MySQL Workbench 8.0\” to enter the correct folder, replacing this directory with the correct installation directory on your PC. For example, if your version of MySQL is 8.0.1, use the MySQL Workbench 8.0.1 folder instead.
- From there, type .\mysql.exe -u username -h X.X.X.X:XXXX -p. Replace X.X.X.X:XXXX with your remote server IP address and port number (eg. 100.200.100.200:3306) and username with a MySQL username that allows remote access (such as root). Follow any additional on-screen instructions.
- Provide your password, when prompted, to complete the sign-in process and access your MySQL database remotely.
If this doesn’t work, connect to the server or PC hosting your MySQL server using SSH (or access it directly) using these steps and using the -h localhost argument. You can then create a suitable user account by following the steps below.
Allowing Remote User Access to a MySQL Database
By this point, you should be able to connect to your MySQL server remotely using your server’s root user account or another user account with elevated privileges. 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”; and select 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.