phpMyAdmin adalah salah satu tool paling populer untuk mengelola database MySQL dan MariaDB melalui antarmuka web. Tool ini banyak digunakan oleh web developer, database administrator, dan bahkan pemula yang baru belajar database. Namun, ada satu hal yang sering membuat frustrasi pengguna phpMyAdmin, yaitu session timeout yang terlalu singkat. Bayangkan sedang mengerjakan query yang panjang, tiba-tiba muncul pesan bahwa session sudah habis dan kamu harus login ulang — tentu sangat menjengkelkan.
Di sini saya bahas bagaimana cara menambah waktu login phpMyAdmin agar session tidak cepat habis. Kita akan membahas pengaturan untuk berbagai versi phpMyAdmin, pertimbangan keamanan, dan alternatif yang bisa kamu gunakan.
Apa Itu phpMyAdmin?
phpMyAdmin adalah aplikasi web berbasis PHP yang dirancang khusus untuk mengelola database MySQL dan MariaDB. Aplikasi ini menyediakan antarmuka grafis yang intuitif, sehingga kamu bisa melakukan operasi database seperti membuat tabel, menjalankan query, mengimpor dan mengekspor data, mengelola user, dan banyak lagi — tanpa perlu mengetik perintah SQL di command line.
phpMyAdmin pertama kali dikembangkan oleh Tobias Ratschiller pada tahun 1998 dan sekarang dikelola oleh The phpMyAdmin Project. Aplikasi ini menjadi bagian dari hampir semua paket web server lokal seperti XAMPP, WAMP, MAMP, dan LAMP.
Mengapa Session Timeout Terjadi?
Secara default, phpMyAdmin memiliki batasan waktu session yang relatif singkat. Hal ini sebenarnya merupakan fitur keamanan — jika pengguna meninggalkan komputer tanpa logout, session yang aktif bisa disalahgunakan oleh orang lain untuk mengakses database.
Ada beberapa faktor yang mempengaruhi session timeout:
- Konfigurasi phpMyAdmin — File
config.inc.phpmemiliki pengaturanLoginCookieValidity. - Konfigurasi PHP — Parameter
session.gc_maxlifetimediphp.inijuga mempengaruhi durasi session. - Konfigurasi Web Server — Beberapa web server memiliki timeout setting sendiri.
Default timeout di phpMyAdmin biasanya adalah 1440 detik (24 menit). Artinya, jika kamu tidak berinteraksi dengan phpMyAdmin selama 24 menit, session akan berakhir dan kamu harus login kembali.
Langkah 1: Mengubah Konfigurasi di config.inc.php
Cara paling umum untuk menambah waktu login phpMyAdmin adalah dengan mengedit file konfigurasi config.inc.php. File ini biasanya terletak di:
- XAMPP:
C:xamppphpMyAdminconfig.inc.php - WAMP:
C:wamp64appsphpmyadmin4.x.xconfig.inc.php - Linux:
/etc/phpmyadmin/config.inc.php - MAMP:
/Applications/MAMP/bin/phpMyAdmin/config.inc.php
Buka file tersebut menggunakan text editor (Notepad++, VS Code, atau Sublime Text), lalu cari atau tambahkan baris berikut:
<?php
/* Konfigurasi phpMyAdmin */
// Server MySQL
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
// Menambah waktu session timeout
$cfg['Servers'][$i]['LoginCookieValidity'] = 3600; // 1 jam (dalam detik)
// Menonaktifkan peringatan session timeout
$cfg['LoginCookieStore'] = 3600;
?>
Penjelasan parameter:
LoginCookieValidity— Menentukan durasi validitas cookie login dalam detik. Contoh: 3600 = 1 jam, 7200 = 2 jam, 86400 = 24 jam.LoginCookieStore— Menentukan berapa lama cookie disimpan di browser. Nilainya harus sama atau lebih besar dariLoginCookieValidity.
Langkah 2: Mengubah Konfigurasi PHP (php.ini)
Selain mengedit file konfigurasi phpMyAdmin, kamu juga perlu memastikan bahwa konfigurasi PHP mendukung session yang lebih lama. Edit file php.ini dan cari baris berikut:
session.gc_maxlifetime = 1440
Ubah nilainya menjadi lebih besar, misalnya:
session.gc_maxlifetime = 3600
Lokasi file php.ini tergantung pada paket yang kamu gunakan:
- XAMPP:
C:xamppphpphp.ini - WAMP:
C:wamp64inphpphp8.x.xphp.ini - Linux:
/etc/php/8.x/apache2/php.iniatau/etc/php/8.x/cli/php.ini
Setelah mengedit, jangan lupa untuk me-restart web server (Apache atau Nginx) agar perubahan berlaku.
Langkah 3: Restart Apache/Service
Perubahan pada config.inc.php biasanya langsung berlaku tanpa restart. Namun, perubahan pada php.ini memerlukan restart service:
# Untuk XAMPP: Restart Apache melalui XAMPP Control Panel
# Untuk Linux (systemd):
sudo systemctl restart apache2
# atau
sudo systemctl restart nginx
# Untuk Linux (service):
sudo service apache2 restart
Pengaturan untuk Versi phpMyAdmin Berbeda
phpMyAdmin 4.x
Versi 4.x menggunakan pendekatan yang sama seperti yang dijelaskan di atas. Edit config.inc.php dan tambahkan LoginCookieValidity. Versi ini masih banyak digunakan di server-server lama.
phpMyAdmin 5.x
Versi 5.x (termasuk 5.2 terbaru) memiliki struktur konfigurasi yang serupa, tetapi beberapa parameter ditambahkan atau dimodifikasi. Pastikan kamu menggunakan sintaks yang benar:
<?php
// phpMyAdmin 5.x
$cfg['Servers'][$i]['LoginCookieValidity'] = 3600;
$cfg['Servers'][$i]['LoginCookieStore'] = 3600;
// Tambahan: Mengatur tempat penyimpanan session
$cfg['SessionSavePath'] = '/tmp/phpmyadmin_sessions';
?>
Jika kamu ingin menggunakan direktori session khusus, pastikan direktori tersebut writable oleh web server.
phpMyAdmin 6.x (Beta)
Versi 6.x saat ini masih dalam tahap pengembangan. Konfigurasi session timeout kemungkinan besar akan tetap sama, tetapi selalu periksa dokumentasi resmi untuk perubahan terbaru.
Pengaturan Timeout via .htaccess
Jika kamu tidak memiliki akses ke php.ini, kamu bisa mencoba mengatur session timeout melalui file .htaccess:
# Tambahkan di file .htaccess di direktori phpMyAdmin
php_value session.gc_maxlifetime 3600
php_value session.cookie_lifetime 3600
Perlu diingat bahwa cara ini hanya berfungsi jika PHP berjalan sebagai Apache module (mod_php), bukan sebagai PHP-FPM atau CGI.
Pertimbangan Keamanan
Meningkatkan waktu session timeout memang nyaman, tetapi ada risiko keamanan yang perlu kamu pertimbangkan:
- Akses Tidak Sah — Semakin lama session aktif, semakin besar risiko orang lain mengakses database kamu jika meninggalkan komputer tanpa logout.
- Shared Computer — Jika kamu menggunakan komputer bersama, sebaiknya tetap gunakan timeout pendek atau selalu logout setelah selesai.
- Production Server — Untuk server production, jangan pernah menyetel timeout terlalu lama. 30-60 menit sudah cukup.
- HTTPS — Selalu gunakan HTTPS saat mengakses phpMyAdmin untuk mengenkripsi cookie session kamu.
Beberapa tips keamanan tambahan:
- Tambahkan
$cfg['Servers'][$i]['ssl'] = true;untuk koneksi terenkripsi ke MySQL. - Gunakan
$cfg['Servers'][$i]['AllowNoPassword'] = false;untuk mengharuskan password. - Batasi akses phpMyAdmin hanya dari IP tertentu melalui .htaccess atau firewall.
- Pertimbangkan untuk menambahkan authentication layer tambahan seperti HTTP Basic Auth atau Two-Factor Authentication.
Konfigurasi Lain yang Berguna
Selain timeout, berikut beberapa konfigurasi lain yang sering dikustomisasi di phpMyAdmin:
<?php
// Mengatur ukuran maksimal upload file (untuk import)
$cfg['UploadDir'] = '';
$cfg['MaxRows'] = 50;
$cfg['ShowDatabasesNavigationAsTree'] = true;
// Mengatur bahasa default
$cfg['DefaultLang'] = 'id'; // Bahasa Indonesia
// Mengatur tema
$cfg['ThemeDefault'] = 'pmahomme';
// Menonaktifkan fitur tertentu untuk keamanan
$cfg['ShowPhpInfo'] = false;
$cfg['ShowChgPassword'] = true;
?>
Alternatif phpMyAdmin
Jika kamu mencari alternatif phpMyAdmin yang mungkin memiliki fitur session management lebih baik, berikut beberapa pilihan:
1. Adminer
Adminer adalah tool database management berbasis PHP yang sangat ringan — hanya satu file. Mendukung MySQL, PostgreSQL, SQLite, dan MS SQL. Session timeout bisa diatur melalui PHP configuration.
2. MySQL Workbench
Tool desktop resmi dari Oracle untuk mengelola MySQL. Tidak memiliki masalah session timeout karena berupa aplikasi desktop. Mendukung visual database design, query editor, dan server administration.
3. DBeaver
Database management tool universal yang mendukung hampir semua jenis database. Tersedia dalam versi Community (gratis) dan Enterprise (berbayar). Berbasis Java dan berjalan di semua platform.
4. HeidiSQL
Tool database management gratis untuk Windows yang sangat ringan dan cepat. Mendukung MySQL, MariaDB, PostgreSQL, dan MS SQL Server.
5. TablePlus
Tool modern dengan antarmuka yang sangat intuitif. Tersedia untuk macOS, Windows, dan Linux. Versi gratisnya memiliki batasan jumlah koneksi.
Troubleshooting Masalah Session
Session tetap habis meskipun sudah diubah
- Pastikan kamu me-restart Apache/Nginx setelah mengubah php.ini.
- Cek apakah ada konfigurasi session timeout di level hosting (cPanel, Plesk, dll).
- Periksa apakah kamu mengedit file php.ini yang benar — kadang ada beberapa file php.ini di sistem.
Error "session has expired" muncul terlalu cepat
- Buka halaman phpMyAdmin, masuk ke menu "Settings" atau "Preferences".
- Cek apakah ada pengaturan session yang menimpa konfigurasi global.
- Periksa log error PHP untuk mengetahui penyebab pastinya.
Session tidak tersimpan
- Pastikan direktori session (biasanya /tmp) memiliki permission yang benar.
- Cek
session.save_pathdi php.ini. - Periksa apakah ada cukup ruang disk di server.
Kesimpulan
Mengatur waktu login phpMyAdmin sebenarnya cukup mudah — kamu hanya perlu mengubah nilai LoginCookieValidity di file config.inc.php dan session.gc_maxlifetime di file php.ini. Namun, ingatlah bahwa semakin lama session timeout, semakin besar pula risiko keamanan. Sesuaikan durasi timeout dengan kebutuhan dan lingkungan kerja kamu. Jika bekerja di komputer pribadi di jaringan aman, timeout 1-2 jam mungkin wajar. Namun untuk server production atau komputer bersama, tetap gunakan timeout yang relatif singkat dan biasakan untuk selalu logout setelah selesai bekerja.