phpMyAdmin dan Adminer: panel database
Cara menginstal panel web untuk database di VDS dan mengamankannya agar tidak menjadi pintu masuk: akses password, pembatasan alamat, alternatif.
Diperbarui 23 Agustus 2026
Panel web memang praktis untuk pengeditan sekali jalan dan melihat tabel. Namun panel juga menjadi penyebab paling umum server diretas: URL /phpmyadmin di-brute-force secara otomatis, dan formulir loginnya memberi akses langsung ke data.
Adminer: satu file
Adminer adalah satu file PHP dan mendukung MySQL, PostgreSQL, serta SQLite. Tidak ada yang perlu dipasang:
mkdir -p /var/www/tools
curl -L -o /var/www/tools/adminer.php \
https://github.com/vrana/adminer/releases/latest/download/adminer.php
chown www-data:www-data /var/www/tools/adminer.php
Anda memerlukan PHP-FPM yang berjalan. Sebaiknya ganti nama file menjadi sesuatu yang tidak mudah ditebak — ini bukan perlindungan, tetapi menghilangkan pemindaian massal.
phpMyAdmin
apt install -y phpmyadmin
Paket ini terhubung ke Apache secara otomatis; untuk Nginx, tentukan path-nya secara manual:
location /db-panel {
alias /usr/share/phpmyadmin;
index index.php;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
}
Perlindungan wajib
Jangan pernah memasang panel tanpa ketiga hal ini.
Akses hanya dari alamat Anda:
location /db-panel {
allow 203.0.113.10;
deny all;
}
Kata sandi tambahan di level web server:
apt install -y apache2-utils
htpasswd -c /etc/nginx/.htpasswd admin
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
Dan yang ketiga, hanya HTTPS: sertifikat Let's Encrypt. Tanpanya, kata sandi database dikirim dalam teks polos.
Pilihan terbaik: tidak ada panel yang terbuka ke luar
Jika alamat Anda dinamis, jangan buka panel sama sekali. Siapkan SSH tunnel dan bekerja dengan klien desktop — DBeaver, TablePlus, HeidiSQL:
ssh -L 3307:127.0.0.1:3306 root@YOUR_ADDRESS -N
Detailnya — akses jarak jauh. Dengan cara ini, tidak ada yang terbuka ke luar selain SSH, dan Anda tidak perlu panel sama sekali.
Kesalahan umum
| Gejala | Penyebab |
|---|---|
Browser mengunduh adminer.php | PHP tidak terhubung ke path ini |
#1045 Access denied | Pengguna database terikat ke host yang berbeda |
| Impor dump besar terputus | upload_max_filesize dan max_execution_time terlalu kecil; lebih baik impor dari konsol |
Ribuan permintaan ke /phpmyadmin di log | Pemindaian rutin — panel harus ditutup |
| Panel berfungsi, tetapi situs tidak | Pool PHP-FPM bersama habis oleh permintaan berat panel |
Dump melalui panel web pada database besar akan timeout. Backup yang sesungguhnya dibuat dari konsol secara terjadwal — backup database.