Instalasi phpMyAdmin
Bismillahirrahmanirrahim.
Untuk memudahkan mengelola (me-manage) database server melalui GUI, maka diperlukan sebuah tool agar pengelolaan database tidak harus menggunakan perintah-perintah SQL melalui CLI.
Dalam proses kali ini akan dilakukan instalasi phpMyAdmin sebagai tool administrasi MySQL/MariaDB berbasis web. Pada proses ini juga akan dipaparkan bagaimana mengamankan phpMyAdmin agar terdapat keamanan berlapis karena phpMyAdmin rentan terhadap ancaman keamanan.
Instalasi Manual phpMyAdmin
Update sistem terlebih dahulu:
sudo apt update
Saat mencoba menjalankan perintah instalasi phpMyAdmin, akan didapati error dikarenakan tidak tersedia lagi di repositori, sehingga harus diunduh melalui situs web phpMyAdmin. Unduh file tar.gz
pada halaman pengunduhan phpMyAdmin. Versi terbaru saat penulisan artikel ini yaitu 5.2.1.
Pada halaman pengunduhan, terdapat beberapa file arsip dengan ekstensi masing-masing (
.zip
,.tar.gz
, dan.tar.xz
) dan nama file arsip dengan labelall-languages
,english
, dansource
. Silahkan pilih salah satunya, pada artikel ini dipilih file arsip.tar.gz
dengan labelall-languages
.
Pengunduhan phpMyAdmin bisa langsung memilih salah satu file dan langsung unduh atau melalui perintah terminal dengan bantuan utilitas wget
.
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.tar.gz
Proses pengunduhan:
--2023-06-18 00:18:03-- https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.tar.gz
Resolving files.phpmyadmin.net (files.phpmyadmin.net)... 143.244.33.157, 89.187.162.154, 143.244.33.172, ...
Connecting to files.phpmyadmin.net (files.phpmyadmin.net)|143.244.33.157|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 13041998 (12M) [application/octet-stream]
Saving to: ‘phpMyAdmin-5.2.1-all-languages.tar.gz’
phpMyAdmin-5.2.1-all-l 100%[==========================>] 12.44M 504KB/s in 35s
2023-06-18 00:18:40 (366 KB/s) - ‘phpMyAdmin-5.2.1-all-languages.tar.gz’ saved [13041998/13041998]
fajri@fajri-PC:~$
Ekstrak file tar.gz
:
tar xvf phpMyAdmin-5.2.1-all-languages.tar.gz
Salin semua isi folder phpMyAdmin yang sudah diekstrak pada direktori /usr/share/
dan ubah namanya menjadi phpmyadmin
saja.
sudo mv phpMyAdmin-5.2.1-all-languages/ /usr/share/phpmyadmin
Sampai tahap ini, phpMyAdmin sudah berhasil diinstal. Tetapi, agar dapat diakses melalui web browser dibutuhkan sejumlah perubahan konfigurasi.
Konfigurasi Manual phpMyAdmin
Ketika instalasi dilakukan melalui package manager, maka phpMyAdmin sudah terinstal dengan baik termasuk konfigurasi yang otomatis dilakukan oleh sistem. Namun, instalasi phpMyAdmin dilakukan melalui source file maka harus dilakukan konfigurasi secara manual.
Membuat direktori penyimpanan file sementara (temporary file):
sudo mkdir -p /var/lib/phpmyadmin/tmp
Atur kepemilikan direktori ke www-data
–user profile yang menjalankan web server seperti Apache secara default digunakan pada sistem Ubuntu dan Debian:
sudo chown -R www-data:www-data /var/lib/phpmyadmin
Sebelumnya, sudah dilakukan ekstrak folder yang menyertakan contoh file konfigurasi. Buat salinan, dan ubah namanya menjadi config.inc.php
.:
sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
Buka file dengan teks editor, misalnya nano
:
sudo nano /usr/share/phpmyadmin/config.inc.php
Secara default, phpMyAdmin menggunakan metode autentikasi cookie
yang memungkinkan login dengan salah satu user valid MariaDB. Pada metode ini, kata sandi pengguna MariaDB disimpan dan dienkripsi dengan algoritma AES (Advanced Encryption Standard) pada cookie sementara. Pada phpMyAdmin menggunakan cipher Blowfish untuk tujuan ini. Cari dan temukan pada file konfigurasi tulisan $cfg['blowfish_secret']
lalu tambahkan string acak sebanyak 32 karakter, (tidak perlu diingat, hanya untuk keperluan internal algoritma AES).
$cfg['blowfish_secret'] = 'STRINGOFTHIRTYTWORANDOMCHARACTER'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
Untuk membuat karakter acak dapat memanfaatkan program pwgen
(sudo apt install pwgen
). Buat 1 buah string acak sebanyak 32 karakter: pwgen -s 32 1
.
Selanjutnya, temukan baris /* User used to manipulate with storage */
. Lalu isi pada bagian controluser
(user mariaDB) –pma
merupakan user khusus yang melakukan tugas administratif tertentu– dan controlpass
(kata sandi user MariaDB). Jangan lupa hapus tanda dua garis miring yang ada pada bagian depan baris. Ini dilakukan agar tidak sembarang user yang dapat mengakses database melalui phpMyAdmin.
/* User used to manipulate with storage */
// $cfg['Servers'][$i]['controlhost'] = '';
// $cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'root';
$cfg['Servers'][$i]['controlpass'] = 'password';
Skrol ke bawah, pada bagian /* Storage database and tables */
terdapat akses-akses administratif user database pma
. Hilangkan tanda dua garis miring (komentar) pada tiap bagian sehingga menjadi:
/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
Tabel-tabel di atas ini belum ada, namun akan segera dibuat.
Terakhir, skrol ke paling bawah dan tambahkan baris berikut. Direktori temporary akan digunakan oleh phpMyAdmin sebagai template cache agar loading halaman lebih cepat.
$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';
Simpan dan tutup file (CTRL + X
, Y
, lalu ENTER
).
Selanjutnya, perlu untuk membuat storage tabel dan database phpMyAdmin. Pada instalasi phpMyAdmin, terdapat file dengan nama create_tables.sql
. File SQL ini memuat perintah-perintah yang dibutuhkan untuk membuat storage tabel dan database phpMyAdmin agar dapat berfungsi dengan baik.
Jalankan perintah:
sudo mariadb < /usr/share/phpmyadmin/sql/create_tables.sql
Selanjutnya, buat user administratif pma
. Buka prompt MariaDB:
sudo mariadb
Buat user pma
dsn GRANT izin yang sesuai, pastikan input password
sesuai dengan yang ada pada dile config.inc.php
.
GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'password';
Untuk mengelola database melalui phpMyAdmin, buat user baru yang memiliki privilege terhadap semua tabel yang ada dalam database dan buat kata sandi yang kuat.
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Keluar dari prompt MariaDB:
exit
phpMyAdmin sudah sepenuhnya terinstal dan dikonfigurasi pada server. Tetapi, server Apache belum bisa men-serve aplikasi. Buat file konfigurasi Apache untuk mengatasinya.
Konfigurasi Apache untuk Men-serve phpMyAdmin
Saat instalasi phpMyAdmin melalui repositori, proses instalasi akan membuat file konfigurasi Apache secara otomatis (phpmyadmin.conf
) dan disimpan pada direktori /etc/apache2/conf-enabled/
. Karena instalasi dilakukan secara manual maka harus membuat filenya sendiri.
sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Lalu tambahkan isi:
# phpMyAdmin default Apache configuration
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
<IfModule mod_php5.c>
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
</IfModule>
<FilesMatch ".+\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
php_admin_value mbstring.func_overload 0
</IfModule>
<IfModule mod_php.c>
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
</IfModule>
<FilesMatch ".+\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
php_admin_value mbstring.func_overload 0
</IfModule>
</Directory>
# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
<IfModule mod_authz_core.c>
<IfModule mod_authn_file.c>
AuthType Basic
AuthName "phpMyAdmin Setup"
AuthUserFile /etc/phpmyadmin/htpasswd.setup
</IfModule>
Require valid-user
</IfModule>
</Directory>
# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
Require all denied
</Directory>
Simpan dan tutup file, lalu aktifkan dengan mengetikkan:
sudo a2enconf phpmyadmin.conf
Output:
Enabling conf phpmyadmin.
To activate the new configuration, you need to run:
systemctl reload apache2
Lalu reload service apache2
agar konfigurasi diterapkan.
sudo systemctl reload apache2
Setelah selesai, phpMyAdmin sudah dapat diakses melalui web browser.
https://<alamat_domain>/phpmyadmin
Berikut tampilan phpMyAdmin setelah login.
Sekarang sudah dapat terkoneksi dan berinteraksi dengan phpMyAdmin, langkah terakhir yaitu memperkuat keamanan sistem agar terlindungi dari penyerang.
Mengamankan phpMyAdmin Lebih Lanjut
Karena phpMyAdmin banyak digunakan dimana-mana sehingga sangat berpotensi menjadi target bagi penyerang, sehingga perlu untuk menambahkan perlindungan akses terautorisasi. Salah satu cara termudah yaitu menempatkan sebuah gateway di depan semua aplikasi menggunakan fungsionalitas autorisasi dan autentikasi Apache yaitu .htaccess
.
Edit file konfigurasi Apache:
sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Tambahkan AllowOverride All
di bagian dalam <Directory /usr/share/phpmyadmin>
, seperti ini:
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
<IfModule mod_php5.c>
...
Simpan dan tutup file. Restart service Apache:
sudo systemctl restart apache2
Sekarang .htaccess
sudah diaktifkan. Lanjutkan, dengan membuat file .htaccess
. Agar berhasil, file ini harus dibuat di dalam direktori aplikasi:
sudo nano /usr/share/phpmyadmin/.htaccess
Tambahkan baris:
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /usr/share/phpmyadmin/.htpasswd
Require valid-user
Lokasi yang dipilih untuk file password yaitu /usr/share/phpmyadmin/.htpasswd
. Buat file dengan utilitas htpasswd
dan sebuah user:
sudo htpasswd -c /usr/share/phpmyadmin/.htpasswd root
Output:
New password:
Re-type new password:
Adding password for user root
Untuk membuat user tambahan, jalankan seperti perintah di atas tanpa -c
:
sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser
Restart service Apache agar autentikasi tambahan diterapkan:
sudo systemctl restart apache2
Sekarang, saat mengakses phpMyAdmin melalui web browser, akan dihadapkan tampilan login tambahan (autentikasi Apache) sebelum dihadapkan pada halaman login phpMyAdmin. Pengaturan ini menambahkan layer keamanan tambahan yang diinginkan karena phpMyAdmin rawan terhadap kerentanan.
Jika tidak dapat melakukan autentikasi dengan data yang benar, saat menekan tombol Cancel akan dihadapkan pada halaman error Unauthorized.
Akhirnya sampai juga di bagian akhir artikel ini. Terima kasih sudah membaca artikel ini sampai bagian akhir.
Demikian langkah-langkah instalasi phpMyAdmin ini. Semoga bermanfaat. Jangan lupa di-share.
Referensi
- Halaman Pengunduhan phpMyAdmin
- phpmyadmin has no installation candidate
- How To Install phpMyAdmin From Source on Debian 10, diinstal di OS Deepin 20.7 x86_64