Install phpMyAdmin
Install phpMyAdmin

Install phpMyAdmin: Web Server Apache dan NGINX

phpMyAdmin adalah sebuah aplikasi web open source yang dirancang untuk mengelola MySQL database atau MariaDB database melalui antarmuka pengguna grafis.

phpMyAdmin memungkinkan pengguna untuk melakukan berbagai tugas administrasi database melalui web browser tanpa perlu menggunakan perintah SQL secara langsung di server lewat command line.

Dengan menggunakan phpMyAdmin, pengguna dapat membuat, mengedit, dan menghapus basis data, tabel, kolom, serta mengelola pengguna dan hak akses.

Apache

sudo apt install apache2 php8.3 php8.3-fpm libapache2-mod-php8.3 php8.3-cli php8.3-common php8.3-mbstring php8.3-gd php8.3-intl php8.3-xml php8.3-mysql php8.3-zip

Download phpMyAdmin

Download phpMyAdmin versi 5.2.3. Untuk phpMyAdmin versi lain atau yang terbaru download di phpmyadmin.net.

wget https://files.phpmyadmin.net/phpMyAdmin/5.2.3/phpMyAdmin-5.2.3-all-languages.tar.gz -O phpmyadmin-v5.2.3.tar.gz

Mengekstrak file phpMyAdmin*.tar.gz.

tar xzvf phpmyadmin-v5.2.3.tar.gz

Memindahkan direktori hasil ekstrak ke /var/www/phpmyadmin.

cd phpMyAdmin-5.2.3-all-languages
sudo mkdir /var/www/phpmyadmin
sudo mv * /var/www/phpmyadmin/
sudo rm -r ../phpMyAdmin-5.2.3-all-languages/

Konfigurasi phpMyAdmin

Berpindah ke direktori phpmyadmin dan menduplikasi file contoh konfigurasi phpMyAdmin.

cd /var/www/phpmyadmin
sudo cp config.sample.inc.php config.inc.php

Mengubah user dan group direktori phpmyadmin.

sudo chown -R www-data:www-data /var/www/phpmyadmin
sudo find /var/www/phpmyadmin -type d -exec chmod 775 {} \;
sudo find /var/www/phpmyadmin -type f -exec chmod 664 {} \;

Generate random string dengan menggunakan openssl. String yang dihasilkan akan dimasukkan sebagai nilai dari variabel opsi blowfish_secret.

openssl rand -base64 32

Contoh hasil generate random string. Salin string yang dihasilkan.

4EbT1IkS/K0pRGsmfsJOhOqnbpaUPJtc47wXovZnkcc=

Membuka file konfigurasi config.inc.php.

sudo nano config.inc.php

Paste random string pada variabel blowfish_secret.

$cfg['blowfish_secret'] = 'UHXZEoPdA+2TIvdQxWRGXh/LoIFa4lK/OikjYorP12xTgZaU948u7sgLOrpruPFpsAyUwMzfR0OB6xqz3YRtJw==';

Menonaktifkan akses user root database dengan menambahkan AllowRoot false di bawah opsi AllowPassword.

$cfg['Servers'][$i]['AllowNoPassword'] = false;
$cfg['Servers'][$i]['AllowRoot'] = false;
/**
 * Servers configuration
 */
$cfg['ShowCreateUser'] = false;
$cfg['AllowArbitraryServer'] = false;
$cfg['AllowThirdPartyFraming'] = false;
$cfg['ShowPhpInfo'] = false;
$cfg['ShowChgPassword'] = false;
$cfg['LoginCookieStore'] = 0;
$cfg['TempDir'] = '/tmp';

// Enable reCAPTCHA (opsional)
$cfg['CaptchaLoginPublicKey'] = 'YOUR_PUBLIC_KEY';
$cfg['CaptchaLoginPrivateKey'] = 'YOUR_PRIVATE_KEY';

Kemudian Save dan Exit dari nano

Hapus folder setup

sudo rm -r /var/www/phpmyadmin/setup

Konfigurasi Web Server Apache

URL untuk mengakses phpMyAdmin akan menggunakan IP address dan port misalnya 53000.

Membuat konfigurasi virtual host untuk phpMyAdmin.

sudo nano /etc/apache2/sites-available/phpmyadmin.conf

Masukkan konfigurasi virtual host untuk phpMyAdmin. Ganti IP_SERVER dengan Public IP VPS.

Listen 53000
<VirtualHost *:53000>
    ServerName IP_SERVER
    DocumentRoot /var/www/phpmyadmin
    <Directory /var/www/phpmyadmin>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog /var/log/apache2/phpmyadmin_error.log
    CustomLog /var/log/apache2/phpmyadmin_access.log combined
</VirtualHost>

Menonaktifkan informasi web server apache2 dan ketika terjadi error.

sudo nano /etc/apache2/conf-available/security.conf
ServerTokens Prod
ServerSignature Off

Cek apakah tidak ada kesalahan konfigurasi

sudo apache2ctl -t

Mengaktifkan konfigurasi virtual host phpmyadmin.conf, restart Apache service, dan menampilkan status Apache service.

sudo a2ensite phpmyadmin.conf
sudo systemctl restart apache2
sudo systemctl status apache2

Akses http://IP_SERVER:53000, hasilnya halaman login phpMyAdmin.

From Login phpMyAdmin
From Login phpMyAdmin

NGINX

sudo apt install nginx php8.3 php8.3-fpm libapache2-mod-php8.3 php8.3-cli php8.3-common php8.3-mbstring php8.3-gd php8.3-intl php8.3-xml php8.3-mysql php8.3-zip

Konfigurasi NGINX

Sama seperti di Apache, URL aksesnya IP dan port 53000. Membuat konfigurasi server block untuk phpMyAdmin.

sudo nano /etc/nginx/sites-available/phpmyadmin.conf

Masukkan konfigurasi server block untuk phpMyAdmin.

server {
    listen 53000;
    server_name IP_SERVER;
    root /var/www/phpmyadmin;
    index index.php;
    location / {
      try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
      try_files $fastcgi_script_name =404;
      include fastcgi_params;
      fastcgi_pass unix:/run/php/php8.3-fpm.sock;
      fastcgi_index index.php;
      fastcgi_param DOCUMENT_ROOT $realpath_root;
      fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    }

    location /phpmyadmin/ {
      root /var/www;
    }
    access_log /var/log/nginx/phpmyadmin_access.log;
    error_log /var/log/nginx/phpmyadmin_error.log;
}

Menonkatifkan informasi nginx

sudo nano /etc/nginx/nginx.conf

Hapus simbol pagar untuk mengaktifkan.

http {
..........................
    server_tokens off;
..........................
}

Mengaktifkan konfigurasi server block, menguji konfigurasi, dan restart service nginx.

sudo ln -s /etc/nginx/sites-available/phpmyadmin.conf /etc/nginx/sites-enabled
sudo systemctl restart php8.3-fpm
sudo systemctl restart nginx
sudo systemctl status nginx

Akses http://IP_SERVER:53000, hasilnya halaman login phpMyAdmin.

Kesimpulan

Instalasi phpMyAdmin pada dasarnya adalah proses menghubungkan aplikasi PHP dengan web server. Apache menawarkan integrasi yang lebih sederhana melalui paket repositori dan dukungan otomatisnya.

Sementara NGINX memberikan performa lebih baik namun memerlukan konfigurasi manual pada server block .

Selalu ingat untuk mengamankan akses phpMyAdmin. Langkah minimum yang perlu kamu lakukan adalah mengaktifkan HTTPS menggunakan Certbot atau CloudFlare untuk mengenkripsi lalu lintas data, serta membatasi akses login hanya dari IP tertentu melalui konfigurasi firewall.