phpMyAdmin adalah tools yang free dan open source untuk mengelola server MySQL dan MariaDB melalui antarmuka berbasis web.
Dengan phpMyAdmin, Anda dapat membuat dan mengelola database dan pengguna, menjalankan statement SQL, mengimpor dan mengekspor data, dan melakukan aktivitas basis data seperti, membuat, menghapus, tables, columns, indeks, izin, dan banyak lagi.
phpMyAdmin adalah salah satu alat administrasi yang paling populer dan paling banyak digunakan, terutama untuk layanan web hosting.
Dalam tutorial ini, kami akan menunjukkan kepada Anda cara menginstal dan mengamankan phpMyAdmin pada server CentOS 8.
Persyaratan
- Server yang menjalankan CentOS 8.
- Masuk sebagai root atau user dengan hak sudo
Instal LAMP Server
Pertama, Anda harus menginstal Apache, MariaDB, PHP dan library PHP lainnya ke server. Anda dapat menginstal semuanya dengan perintah berikut:
dnf install httpd mariadb-server php php-pdo php-pecl-zip php-json php-common php-fpm php-mbstring php-cli php-mysqlnd php-json php-mbstring wget unzip
Setelah semua paket diinstal, mulai layanan Apache dan MariaDB dan aktifkan untuk memulai setelah sistem reboot dengan perintah berikut:
systemctl start httpd systemctl start mariadb systemctl enable httpd systemctl enable mariadb
Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.
Konfigurasi MariaDB
Mulai dengan menjalankan script mysql_secure_installation untuk melakukan peningkatan keamanan dasar:
mysql_secure_installation
Perintah ini akan mengubah kata sandi root, menghapus pengguna anonim, melarang login root dari jarak jauh dan menghapus database pengujian. Jawab pertanyaan seperti yang ditunjukkan di bawah ini dan pastikan untuk memilih kata sandi yang aman untuk pengguna root:
Enter current password for root (enter for none): Set root password? [Y/n] N Remove anonymous users? [Y/n] y Disallow root login remotely? [Y/n] y Remove test database and access to it? [Y/n] y Reload privilege tables now? [Y/n] y
Setelah selesai, Anda akan melihat Output berikut
... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!
pada poin ini, Konfigurasi untuk mengamankan MariaDB telah selesai.
Install phpMyAdmin
Secara default, phpMyAdmin tidak tersedia di repositori default CentOS 8. Jadi, Anda perlu mengunduh versi terbaru phpMyAdmin dari situs web resmi mereka. Anda dapat mengunduhnya dengan perintah berikut:
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.2/phpMyAdmin-4.9.2-all-languages.zip
Pada saat penulisan, versi phpMyadmin yang tersedia adalah versi 4.9.2
, kunjungi halaman resmi phpMyAdmin untuk melihat versi baru yang tersedia.
Setelah diunduh, unzip file yang diunduh dengan perintah berikut:
unzip phpMyAdmin-4.9.2-all-languages.zip
Selanjutnya, pindahkan konten yang diekstraksi ke direktori /usr/share seperti yang ditunjukkan di bawah ini:
sudo mv phpMyAdmin-4.9.2-all-languages /usr/share/phpmyadmin
Selanjutnya, masuk ke direktori /usr/share/phpmyadmin
dan ganti nama file config.sample.inc.php
menjadi config.inc.php
:
cd /usr/share/phpmyadmin mv config.sample.inc.php config.inc.php
Selanjutnya, buka file dengan editor teks favorit Anda seperti yang ditunjukkan di bawah ini:
sudo nano config.inc.php
Ubah baris berikut:
$cfg['blowfish_secret'] = 'gunakan-password-generator-sebanyak-16-karakter';
disarankan untuk menggunakan password generator untuk mengisi baris di atas, Anda tidak perlu menghafal input kata dari blowfish_secret
ini.
Simpan dan tutup file setelah Anda selesai. Kemudian, impor create_tables.sql
dengan perintah berikut:
mysql < /usr/share/phpmyadmin/sql/create_tables.sql -u root -p
Berikan kata sandi root Anda saat diminta untuk mengimpor tabel.
Selanjutnya, buat direktori tmp untuk phpmyadmin dan berikan izin yang tepat:
sudo mkdir /usr/share/phpmyadmin/tmp sudo chown -R apache:apache /usr/share/phpmyadmin sudo chmod 777 /usr/share/phpmyadmin/tmp
Konfigurasikan Apache untuk phpMyAdmin
Selanjutnya, Anda perlu membuat file konfigurasi virtual host Apache untuk phpMyAdmin. Anda dapat membuatnya dengan perintah berikut:
sudo nano /etc/httpd/conf.d/phpmyadmin.conf
Tambahkan baris berikut:
Alias /phpmyadmin /usr/share/phpmyadmin <Directory /usr/share/phpmyadmin/> AddDefaultCharset UTF-8 <IfModule mod_authz_core.c> # Apache 2.4 <RequireAny> Require all granted </RequireAny> </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order Deny,Allow Deny from All Allow from 127.0.0.1 Allow from ::1 </IfModule> </Directory> <Directory /usr/share/phpmyadmin/setup/> <IfModule mod_authz_core.c> # Apache 2.4 <RequireAny> Require all granted </RequireAny> </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order Deny,Allow Deny from All Allow from 127.0.0.1 Allow from ::1 </IfModule> </Directory>
Simpan dan tutup file setelah Anda selesai. Kemudian restart Apache dengan perintah berikut:
systemctl restart httpd
Anda dapat memeriksa status Apache dengan perintah berikut:
systemctl status httpd
Anda akan melihat output berikut:
? httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Drop-In: /usr/lib/systemd/system/httpd.service.d ??php-fpm.conf Active: active (running) since Wed 2019-12-18 01:07:52 EST; 6s ago Docs: man:httpd.service(8) Main PID: 5636 (httpd) Status: "Started, listening on: port 80" Tasks: 213 (limit: 25044) Memory: 28.7M CGroup: /system.slice/httpd.service ??5636 /usr/sbin/httpd -DFOREGROUND ??5639 /usr/sbin/httpd -DFOREGROUND ??5640 /usr/sbin/httpd -DFOREGROUND ??5641 /usr/sbin/httpd -DFOREGROUND ??5642 /usr/sbin/httpd -DFOREGROUND Dec 18 01:07:52 centos8 systemd[1]: Stopped The Apache HTTP Server. Dec 18 01:07:52 centos8 systemd[1]: Starting The Apache HTTP Server... Dec 18 01:07:52 centos8 httpd[5636]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::200:d0> Dec 18 01:07:52 centos8 httpd[5636]: Server configured, listening on: port 80 Dec 18 01:07:52 centos8 systemd[1]: Started The Apache HTTP Server.
Konfigurasikan SELinux dan Firewall
Secara default, SELinux diaktifkan di CentOS 8. Jadi Anda perlu mengkonfigurasi SELinux agar phpMyAdmin berfungsi dengan benar.
Pertama, instal paket policycoreutils-python-utils
untuk mengelola SELinux environment dengan perintah berikut:
dnf install policycoreutils-python-utils
Selanjutnya, aktifkan akses ke direktori /usr/share/phpmyadmin dengan perintah berikut:
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/phpmyadmin/' semanage fcontext -a -t httpd_sys_rw_content_t "/usr/share/phpmyadmin/tmp(/.*)?"
Sekarang recurse semua file di direktori phpmyadmin Anda dengan menjalankan perintah berikut:
restorecon -Rv '/usr/share/phpmyadmin/'
Selanjutnya, Anda harus membuat rule di firewall untuk mengizinkan layanan HTTP dari jaringan eksternal. Anda dapat mengizinkannya lalu lintas dengan perintah berikut:
firewall-cmd --permanent --add-service=http firewall-cmd --reload
phpMyAdmin sekarang diinstal dan dikonfigurasi. Sekarang saatnya untuk memeriksa apakah konfigurasi tersebut berfungsi atau tidak.
Buka browser web Anda dan ketik URL http://serverIP/phpmyadmin. Anda akan diarahkan ke halaman berikut:
Amankan phpMyAdmin (OPSIONAL)
Pada titik ini, instance phpMyAdmin berfungsi dengan benar. Namun, mengamankan instance phpMyAdmin Anda dari dunia luar merupakan tugas penting bagi Anda. Di bagian ini, kami akan menunjukkan kepada Anda bagaimana cara mengamankan instance phpMyAdmin.
Izinkan phpMyAdmin dari IP Tertentu
Pertama, Anda perlu mengkonfigurasi phpMyAdmin Anda agar hanya dapat diakses dari alamat IP koneksi rumah Anda. Dengan begini, phpMyAdmin tidak akan dapat di akses selain dari IP yang telah Anda tentukan.
Anda dapat mengonfigurasinya dengan mengedit file
nano /etc/httpd/conf.d/phpmyadmin.conf
Temukan baris berikut:
<RequireAny> Require all granted </RequireAny>
Dan, ganti dengan yang berikut ini:
<RequireAny> Require ip Alamat_IP_Masukkan_di_Sini Require ip ::1 </RequireAny>
Simpan dan tutup file setelah Anda selesai.
Konfigurasikan Otentikasi Tambahan
Merupakan ide bagus untuk melindungi direktori phpmyadmin Anda dengan membuat otentikasi dasar berupa kata sandi, tentunya opsi ini mengurangi serangan brute-force.
Untuk melakukannya, buat file otentikasi baru menggunakan tool htpasswd
seperti yang ditunjukkan di bawah ini:
mkdir /etc/phpmyadmin htpasswd -c /etc/phpmyadmin/.htpasswd admin
Anda akan diminta untuk memberikan kata sandi admin Anda seperti yang ditunjukkan di bawah ini:
New password: Re-type new password: Adding password for user admin
Selanjutnya, Anda perlu mengkonfigurasi Apache untuk menggunakan file .htpasswd
. Anda dapat melakukan ini dengan mengedit file /etc/httpd/conf.d/phpmyadmin.conf.
nano /etc/httpd/conf.d/phpmyadmin.conf
Tambahkan baris berikut di bawah baris “AddDefaultCharset UTF-8
“:
Options +FollowSymLinks +Multiviews +Indexes
AllowOverride None
AuthType basic
AuthName "Authentication Required"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user
Simpan file dan restart layanan Apache agar perubahan diterapkan:
systemctl restart httpd
Akses phpMyAdmin
Sekarang, instance phpMyAdmin Anda diamankan dengan lapisan keamanan ekstra. Buka browser web Anda dan ketik URL http://server-ip/phpmyadmin
. Anda akan diminta untuk memasukkan kredensial masuk dari pengguna yang sebelumnya Anda buat seperti yang ditunjukkan di bawah ini
Berikan nama user dan kata sandi admin Anda, lalu klik tombol OK. Anda akan diarahkan ke halaman login phpMyAdmin:
Sekarang, berikan kredensial login user administratif MySQL Anda dan klik tombol Go. Anda akan melihat halaman berikut:
Kesimpulan
Selamat! Anda telah berhasil menginstal dan mengamankan phpMyAdmin di server CentOS 8. Anda sekarang dapat membuat database, pengguna, tabel dan mengelolanya dari antarmuka berbasis web.