Cara Mengizinkan Koneksi Jarak Jauh ke MySQL
Cara Mengizinkan Koneksi Jarak Jauh ke MySQL
Jika Anda bekerja dengan database MySQL, maka Anda sudah menyadari tantangan yang Anda hadapi dalam menjaga keamanan database Anda. Dari upaya peretasan basis data menggunakan injeksi SQL hingga serangan brute force, sulit untuk menjaga keamanan data Anda, terutama jika Anda bekerja dengan basis data dari jarak jauh.
Ada beberapa cara untuk mengonfigurasi server SQL untuk mengizinkan koneksi jarak jauh, tetapi Anda harus berhati-hati, karena mengizinkan koneksi jarak jauh di server MySQL dapat membuat database Anda menjadi sasaran empuk bagi peretas. Jika Anda ingin mengizinkan koneksi jarak jauh yang aman ke database MySQL, inilah yang perlu Anda ketahui.
Daftar isi
Sebelum kamu memulai
Sebelum Anda membuat perubahan apa pun pada database MySQL Anda, penting bagi Anda untuk membuat cadangan database Anda, terutama jika Anda bekerja di server produksi (server yang digunakan secara aktif). Setiap perubahan yang Anda buat pada database Anda, atau server yang menghostingnya, dapat mengakibatkan kehilangan data yang serius jika terjadi kesalahan.
Anda mungkin juga menemukan bahwa perubahan pada koneksi server Anda dapat mencegah Anda mengaksesnya sesudahnya. Jika ini terjadi, Anda mungkin perlu berkonsultasi dengan administrator server untuk dukungan lebih lanjut. Ide yang bagus adalah mencoba perubahan apa pun pada server MySQL yang dijalankan secara lokal untuk memeriksa apakah perubahan Anda berfungsi sebelum mencobanya dari jarak jauh.
Kemungkinan juga jika Anda membuat perubahan pada server jarak jauh, Anda memerlukan cara yang aman untuk terhubung dan membuat perubahan. SSH (Secure Shell) seringkali merupakan cara terbaik untuk melakukan ini, karena memungkinkan Anda untuk terhubung ke server jauh Anda. Anda juga dapat menggunakan SSH untuk terhubung ke server di jaringan lokal Anda, seperti yang dihosting di Raspberry Pi.
Panduan ini akan memandu Anda melalui langkah-langkah untuk mengonfigurasi MySQL untuk mengizinkan koneksi jarak jauh, tetapi Anda harus memastikan bahwa Anda memiliki akses langsung atau jarak jauh ke server yang menghosting server MySQL Anda terlebih dahulu.
Misalkan Anda tidak memiliki akses jarak jauh ke server Anda melalui SSH (misalnya). Dalam hal ini, Anda tidak akan dapat mengonfigurasi database MySQL Anda untuk mengizinkan koneksi jarak jauh secara langsung kecuali akun root mySQL Anda sudah mengizinkan koneksi jarak jauh. Jadi, Anda harus membuat koneksi ini terlebih dahulu sebelum Anda dapat melanjutkan.
Mengedit File Konfigurasi MySQL Anda
Langkah pertama dalam mengonfigurasi MySQL untuk mengizinkan koneksi jarak jauh adalah mengedit file konfigurasi MySQL Anda. Pada tahap ini, panduan ini akan menganggap Anda telah terhubung ke server, PC, atau Mac yang menghosting database mySQL Anda dari jarak jauh dan memiliki akses konsol.
Atau, Anda dapat mengonfigurasi server MySQL lokal menggunakan terminal terbuka di Mac atau Linux atau editor teks di Windows.
1. Untuk memulai, gunakan editor teks konsol pilihan Anda untuk mengedit file database MySQL Anda. Di Linux, ketik sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf ke terminal atau jendela SSH untuk mengedit file ini menggunakan editor nano (dengan asumsi database MySQL Anda berada di lokasi default).
2. Jika Anda menjalankan Windows, buka File Explorer dan akses folder yang berisi instalasi MySQL Anda (mis. C:/Program Files/MySQL/MySQL Server 8.0). Buka file my.ini menggunakan editor teks default Anda (mis. Notepad) dengan mengklik dua kali entri tersebut. Jika tidak ada, buat file terlebih dahulu.
3. Di Mac, buka jendela terminal dan ketik sudo nano /usr/local/etc/my.cnf. Ini adalah file konfigurasi default untuk MySQL jika Anda telah menginstal MySQL menggunakan homebrew.
Lokasi yang dirujuk di atas adalah lokasi default untuk file konfigurasi MySQL. Jika perintah ini tidak berfungsi, Anda harus mencari file yang relevan (my.cnf, mysqld.cnf, atau my.ini) secara manual untuk menemukan jalur file yang relevan.
Mengatur Rentang IP Aman Bind-Address
4. Setelah Anda membuka file konfigurasi MySQL untuk server Anda, gunakan tombol panah keyboard Anda untuk mencapai bagian bind-address dari file tersebut. Rentang IP ini membatasi koneksi ke database Anda, yang biasanya diatur untuk hanya mengizinkan koneksi dari mesin atau server lokal menggunakan 127.0.0.1.
5. Jika Anda ingin mengkonfigurasi database MySQL Anda untuk mengizinkan koneksi dari perangkat yang menggunakan koneksi internet Anda saat ini, temukan alamat IP publik Anda terlebih dahulu, lalu ganti 127.0.0.1 dengan alamat IP tersebut. Atau, ganti dengan alamat IP untuk perangkat atau server yang ingin Anda izinkan koneksinya.
6. Dalam beberapa keadaan, Anda mungkin ingin mengizinkan semua koneksi jarak jauh ke database MySQL. Ini membawa risiko ekstrem dan tidak boleh digunakan di server produksi. Namun, jika Anda ingin mengizinkannya, ganti 127.0.0.1 dengan 0.0.0.0.
7. Catat nilai port di bagian Pengaturan Dasar. Ini akan diperlukan di bagian selanjutnya. Jika tidak terlihat maka akan digunakan nilai default yaitu port 3306. Anda dapat menambahkan port sendiri dengan mengetikkan port = xxxx pada baris baru, menggantikan xxxx dengan nilai port yang sesuai.
8. Setelah Anda mengonfigurasi bind-address di file konfigurasi MySQL Anda, simpan file tersebut. Jika Anda menggunakan Linux, pilih Ctrl + O dan Ctrl + X untuk melakukan ini. Di Mac, pilih Command + O dan Command + X. Pengguna Windows dapat menyimpan dengan memilih File > Save.
9. Selanjutnya, pengguna Linux dan Mac dapat me-restart MySQL dengan mengetik mysql.server stop && mysql.server start atau mysql.server restart. Anda mungkin perlu meninggikan perintah menggunakan sudo (mis. sudo mysql.server restart) dan menggunakan jalur yang sesuai ke file mysql.server (mis. /usr/local/bin/mysql.server).
10. Jika perintah di atas tidak berhasil, coba sudo service mysql restart sebagai gantinya.
11. Untuk me-restart MySQL di Windows, buka jendela PowerShell baru dengan mengklik kanan menu Start dan memilih Windows PowerShell (Admin). Di jendela PowerShell, ketik net stop mysql80 diikuti oleh net start mysql80, ganti mysql80 dengan nama layanan yang benar di PC Anda.
Jika Anda tidak yakin dengan nama layanan yang benar di Windows, ketik net start untuk menemukannya. Jika Anda tidak dapat memuat ulang konfigurasi Anda, mulai ulang server Anda dan muat ulang MySQL secara manual (jika perlu).
Mengonfigurasi Firewall Anda
Pada tahap ini, database MySQL Anda harus mengizinkan koneksi jarak jauh dari perangkat menggunakan alamat IP yang Anda tetapkan sebagai nilai bind-address dalam file konfigurasi MySQL Anda (atau dari semua perangkat jika Anda menetapkan nilai ini ke 0.0.0.0 sebagai gantinya). Namun, koneksi akan tetap diblokir oleh perangkat atau firewall jaringan Anda.
Sebagian besar server dan PC menggunakan firewall untuk memblokir koneksi kecuali akses ke port tertentu diberikan. Langkah-langkah untuk mengonfigurasi ini akan bervariasi, tergantung pada apakah Anda menjalankan MySQL di Windows atau Linux. Firewall Mac dinonaktifkan secara default, jadi Anda tidak perlu menyelesaikan langkah tambahan apa pun di sini.
Konfigurasi Firewall Linux
Banyak server Linux menggunakan iptables sebagai utilitas firewall default. Anda dapat mengkonfigurasinya dengan mengikuti langkah-langkah di bawah ini.
1. Buka terminal atau koneksi SSH dan ketik sudo iptables -A INPUT -p tcp -s X.X.X.X –dport YYYY -j ACCEPT. Ganti X.X.X.X dengan alamat IP untuk perangkat yang Anda inginkan untuk mengizinkan koneksi MySQL, dan ganti YYYY dengan nilai port yang cocok dari file konfigurasi MySQL Anda (mis. 3306).
2. Ini akan mengkonfigurasi firewall untuk sementara. Jika Anda menggunakan server Linux berbasis Debian atau Ubuntu, buat perubahan ini permanen dengan mengetikkan sudo netfilter-persistent save dan sudo netfilter-persistent reload ke terminal atau jendela SSH.
Jika iptables bukan alat firewall default untuk distribusi Linux Anda, Anda harus berkonsultasi dengan manual pengguna distribusi Anda untuk informasi lebih lanjut. Jika paket tertentu (seperti netfilter-persistent) tidak tersedia, gunakan alat repositori perangkat lunak distribusi Anda untuk menginstalnya (mis. Sudo apt install netfilter-persistent).
Konfigurasikan Windows Firewall
Jika Anda menggunakan PC atau server Windows untuk meng-host database Anda, Anda dapat mengonfigurasi firewall Anda menggunakan langkah-langkah berikut:
1. Klik kanan menu Start dan pilih Run.
2. Pada kotak Run, ketik wf.msc dan pilih OK.
3. Di jendela Windows Defender, pilih Aturan Masuk > Aturan Baru.
4. Di jendela New Inbound Rule Wizard, pilih Port > Next.
5. 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.
6. At the Action menu, leave the default option to Allow the connection enabled, then select Next.
7. Confirm that you want the rule to apply to all network types, then select Next.
8. 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
1. 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.
2. When prompted, confirm your password. If the connection is successful, a success message will appear in the terminal.
Connecting to MySQL on Windows
1. 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).
2. 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.
3. 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.
4. 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.
1. 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.
2. 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.