---
title: "Cara Mengamankan phpMyAdmin dari Akses Publik"
description: "Langkah mengamankan phpMyAdmin di VPS, dari membatasi IP, akses lewat SSH tunnel, Basic Auth, sampai menolak login root dan memasang Fail2ban."
url: "https://nivelva.com/insight/cara-mengamankan-phpmyadmin-akses-publik"
category: "Keamanan/Cyber Security"
tags: ["phpmyadmin","mysql","vps","apache","keamanan server"]
author: "Theresia Candiawan"
published: "2026-11-07T04:41:00+07:00"
updated: "2026-11-07T04:41:00+07:00"
language: "id"
publisher: "Nivelva (https://nivelva.com)"
---

# Cara Mengamankan phpMyAdmin dari Akses Publik

> **Jawaban singkat:** Jangan biarkan phpMyAdmin terbuka untuk semua orang. Batasi aksesnya ke IP tertentu atau hanya dari localhost lewat SSH tunnel, tambahkan Basic Auth, wajibkan HTTPS, tolak login root, dan perbarui rutin. Bila jarang dipakai, matikan saja.

Coba buka `https://alamat-servermu/phpmyadmin` dari HP yang memakai data seluler. Kalau halaman login phpMyAdmin langsung muncul, berarti siapa pun di internet juga bisa melihatnya, dan alamat seperti itu termasuk yang paling rajin dipindai bot.

phpMyAdmin sendiri bukan aplikasi yang buruk. Masalahnya, ia memberi akses penuh ke database lewat browser. Satu password yang lemah, satu celah yang belum ditambal, dan isi database berpindah tangan. Panduan ini ditujukan untuk phpMyAdmin yang kamu pasang sendiri di VPS (misalnya lewat paket `phpmyadmin` di Ubuntu atau Debian). Di hosting cPanel, phpMyAdmin hanya bisa dibuka setelah login cPanel, jadi fokusnya cukup pada keamanan akun cPanel itu.

## Langkah 1: Putuskan dulu, apakah phpMyAdmin perlu selalu menyala?

Kalau kamu hanya membuka phpMyAdmin sebulan sekali, pilihan paling aman adalah menonaktifkannya dan menyalakannya saat dibutuhkan. Di Apache pada Ubuntu atau Debian:

```
sudo a2disconf phpmyadmin
sudo systemctl reload apache2
```

Saat perlu, jalankan `sudo a2enconf phpmyadmin` lalu muat ulang Apache lagi. Untuk pekerjaan rutin seperti impor dan ekspor, perintah `mysqldump` dan `mysql` lewat SSH sering lebih cepat dan tidak membuka pintu apa pun.

## Langkah 2: Batasi akses hanya dari IP tertentu

Kalau phpMyAdmin harus tetap menyala, langkah paling berdampak adalah membatasi siapa yang boleh membukanya. Pada paket Debian dan Ubuntu, konfigurasi Apache-nya ada di `/etc/phpmyadmin/apache.conf`. Di dalam blok `<Directory /usr/share/phpmyadmin>`, tambahkan:

```
Require ip 127.0.0.1 ::1
Require ip 203.0.113.10
```

Ganti `203.0.113.10` dengan IP statis kantormu. Pastikan di blok yang sama tidak ada `Require all granted`, karena beberapa baris `Require` yang berdiri sendiri dibaca sebagai "salah satu terpenuhi", sehingga aturan IP-mu jadi tidak berarti. Uji lalu muat ulang:

```
sudo apache2ctl configtest
sudo systemctl reload apache2
```

Untuk Nginx, aturan serupa ditaruh di blok `location` yang melayani phpMyAdmin, dengan baris `allow 203.0.113.10;` lalu `deny all;`. Uji dengan `sudo nginx -t` sebelum memuat ulang.

## Langkah 3: Pakai SSH tunnel bila IP-mu berubah-ubah

Banyak koneksi internet kantor dan rumah tidak punya IP tetap. Solusinya: izinkan hanya localhost (baris `Require ip 127.0.0.1 ::1` di atas), lalu buka phpMyAdmin melalui terowongan SSH dari laptopmu:

```
ssh -L 8080:127.0.0.1:80 user@alamat-server
```

Selama sesi SSH itu terbuka, buka `http://localhost:8080/phpmyadmin` di browser laptop. Bagi server, permintaanmu datang dari 127.0.0.1, sehingga lolos aturan. Bagi orang lain di internet, phpMyAdmin tidak bisa dibuka sama sekali. Lalu lintasnya juga terenkripsi oleh SSH. Bila server punya banyak administrator, pola ini bisa dikembangkan menjadi satu pintu masuk khusus seperti dijelaskan di [apa itu bastion host](https://nivelva.com/insight/apa-itu-bastion-host-server-membutuhkannya).

## Langkah 4: Tambahkan lapisan Basic Auth

Dokumentasi resmi phpMyAdmin menyarankan menaruh lapisan autentikasi di depannya, misalnya HTTP Basic Auth. Buat file password:

```
sudo htpasswd -c /etc/phpmyadmin/.htpasswd namaadmin
```

Lalu di blok `<Directory /usr/share/phpmyadmin>` tambahkan `AuthType Basic`, `AuthName "Terbatas"`, `AuthUserFile /etc/phpmyadmin/.htpasswd`, dan `Require valid-user`. Kalau kamu menggabungkannya dengan aturan IP, bungkus keduanya dalam `<RequireAll>` agar kedua syarat harus terpenuhi. Basic Auth hanya aman lewat HTTPS, karena tanpa enkripsi password-nya bisa disadap.

## Langkah 5: Perketat konfigurasi phpMyAdmin

Buka `/etc/phpmyadmin/config.inc.php` dan tambahkan pengaturan berikut setelah definisi server:

```
$cfg['Servers'][$i]['AllowRoot'] = false;
$cfg['LoginCookieValidity'] = 1800;
```

`AllowRoot = false` menolak login dengan user `root`, sehingga penyerang tidak bisa menebak password akun paling berkuasa itu. Buat user database terpisah untuk tiap aplikasi dengan hak sesuai kebutuhan. `LoginCookieValidity` mengatur berapa detik sesi boleh menganggur sebelum harus login lagi. Kalau ada folder `setup` sisa instalasi manual, hapus setelah konfigurasi selesai.

## Langkah 6: Wajibkan HTTPS dan pasang Fail2ban

Pastikan phpMyAdmin hanya dibuka lewat HTTPS, karena username dan password database dikirim lewat formulir login. Sertifikat gratis dari Let's Encrypt sudah cukup. Untuk menahan tebakan password, pastikan login gagal tercatat (lokasinya diatur dengan `$cfg['AuthLog']`, misalnya ke syslog) lalu arahkan Fail2ban ke log tersebut. Cara memasang Fail2ban dibahas di [blokir brute force dengan Fail2ban](https://nivelva.com/insight/fail2ban-blokir-brute-force).

## Langkah 7: Perbarui secara rutin

phpMyAdmin pernah memiliki sejumlah celah keamanan, dan perbaikannya diumumkan di halaman pengumuman keamanan resminya. Jalankan `sudo apt update && sudo apt upgrade` secara berkala, atau pantau rilis baru bila kamu memasang versi dari situs resmi. Jangan lupa memperbarui PHP dan MySQL/MariaDB-nya juga.

Bila tujuanmu sebenarnya adalah mengakses database dari aplikasi desktop seperti DBeaver atau HeidiSQL, pertimbangkan cara lain yang dijelaskan di [membuka akses remote MySQL dengan aman](https://nivelva.com/insight/cara-membuka-akses-remote-mysql-aman).

## Ringkasan pilihan pengamanan

| Cara | Tingkat perlindungan | Cocok untuk |
|:--|:--|:--|
| Nonaktifkan saat tidak dipakai | Paling tinggi | Akses sesekali |
| Hanya localhost + SSH tunnel | Sangat tinggi | Admin dengan IP berubah-ubah |
| Batasi IP kantor | Tinggi | Kantor dengan IP statis |
| Basic Auth + HTTPS | Lapisan tambahan | Digabung dengan pembatasan IP |
| Tolak root, batas sesi, Fail2ban | Lapisan tambahan | Semua instalasi |
| Ganti alamat `/phpmyadmin` saja | Rendah | Hanya mengurangi bot |

## Pertanyaan yang sering diajukan

### Apakah cukup mengganti alamat /phpmyadmin ke nama lain?

Itu hanya mengurangi pemindaian otomatis. Siapa pun yang mengetahui alamatnya tetap bisa mencoba login, jadi tetap batasi IP atau pakai SSH tunnel.

### Apakah phpMyAdmin di cPanel perlu diamankan dengan cara ini?

Tidak perlu, karena di cPanel phpMyAdmin hanya bisa dibuka setelah login cPanel. Yang perlu diamankan adalah akun cPanel-nya: password kuat dan 2FA.

### Saya terkunci setelah membatasi IP, bagaimana memperbaikinya?

Masuk lewat SSH, edit kembali `/etc/phpmyadmin/apache.conf`, perbaiki baris `Require ip`, lalu jalankan `apache2ctl configtest` dan muat ulang Apache. Atau pakai SSH tunnel sementara.

### Apakah Adminer lebih aman daripada phpMyAdmin?

Prinsipnya sama: alat apa pun yang memberi akses database lewat browser harus dibatasi aksesnya. Pilih yang kamu kuasai, lalu terapkan langkah yang sama.

### Bisakah reset password admin WordPress tetap dilakukan setelah phpMyAdmin dibatasi?

Bisa, lewat SSH tunnel atau langsung dengan perintah mysql di server. Langkah lewat phpMyAdmin ada di [reset password admin WordPress](https://nivelva.com/insight/lupa-password-admin-wordpress-reset-lewat-phpmyadmin).

Checklist singkat:

- phpMyAdmin tidak bisa dibuka dari jaringan luar yang tidak diizinkan.
- Akses hanya lewat HTTPS atau SSH tunnel.
- Login root ditolak, setiap aplikasi punya user database sendiri.
- Login gagal tercatat dan diblokir otomatis.
- Paket phpMyAdmin, PHP, dan database rutin diperbarui.

## Sumber

- <https://docs.phpmyadmin.net/en/latest/setup.html>
- <https://docs.phpmyadmin.net/en/latest/config.html>
- <https://httpd.apache.org/docs/2.4/mod/mod_authz_host.html>

---

Diterbitkan oleh Nivelva Insight (https://nivelva.com/insight/). Artikel ini: https://nivelva.com/insight/cara-mengamankan-phpmyadmin-akses-publik
Kontak Nivelva: WhatsApp https://wa.me/6285111245007, email hello@nivelva.com
