Manager, Developer Education
Versi tutorial sebelumnya ditulis oleh Brennan Bearnes.
Walaupun banyak pengguna membutuhkan fungsionalitas dari sistem manajemen basis data seperti MySQL, mereka mungkin tidak merasa nyaman berinteraksi dengan sistem hanya dari prompt MySQL.
phpMyAdmin diciptakan sehingga pengguna dapat berinteraksi dengan MySQL melalui antarmuka web. Dalam panduan ini, kita akan membahas cara menginstal dan mengamankan phpMyAdmin sehingga Anda dapat menggunakannya secara aman untuk mengelola basis data Anda pada sistem Ubuntu 20.04.
Agar bisa menyelesaikan panduan ini, Anda membutuhkan:
ufw
. Untuk menyiapkan ini, ikuti panduan penyiapan server awal untuk Ubuntu 20.04 dari kami.Selain itu, ada pertimbangan keamanan penting saat menggunakan perangkat lunak seperti phpMyAdmin, karena perangkat lunak tersebut:
Karena alasan-alasan ini, dan karena aplikasi PHP yang digunakan secara luas sering menjadi target penyerangan, Anda jangan pernah menjalankan phpMyAdmin pada sistem jarak jauh melalui koneksi HTTP biasa.
Jika Anda tidak memiliki domain yang sudah dikonfigurasi dengan sertifikat SSL/TLS, Anda dapat mengikuti panduan mengamankan Apache dengan Let’s Encrypt pada Ubuntu 20.04 ini. Ini akan mengharuskan Anda untuk mendaftarkan nama domain, menciptakan catatan DNS untuk server Anda, dan menyiapkan Hos Virtual Apache.
Anda dapat menggunakan APT untuk menginstal phpMyAdmin dari repositori Ubuntu asali.
Sebagai pengguna sudo non-root Anda, perbarui indeks paket server Anda:
- sudo apt update
Setelah itu, Anda dapat menginstal paket phpmyadmin
. Bersama dengan paket ini, dokumentasi resmi juga menganjurkan Anda menginstal beberapa ekstensi PHP ke server Anda untuk mengaktifkan fungsionalitas tertentu dan meningkatkan kinerja.
Jika Anda mengikuti prasyarat tutorial tumpukan LAMP, beberapa dari modul-modul ini akan telah terinstal bersama dengan paket php
. Namun, Anda disarankan untuk menginstal paket-paket ini juga:
php-mbstring
: Modul untuk mengelola string non-ASCII dan mengubah string menjadi pengodean yang berbeda-bedaphp-zip
: Ekstensi ini mendukung pengunggahan berkas .zip
ke phpMyAdminphp-gd
: Mengaktifkan dukungan untuk Pustaka Grafis GDphp-json
: Menyediakan PHP dengan dukungan untuk serialisasi JSONphp-curl
: Mengizinkan PHP untuk berinteraksi dengan berbagai jenis server menggunakan protokol yang berbeda-bedaJalankan perintah berikut untuk menginstal paket-paket ini ke sistem Anda. Namun, harap dicatat, bahwa proses instalasi mengharuskan Anda untuk membuat beberapa pilihan untuk mengonfigurasi phpMyAdmin dengan benar. Kita akan membahas opsi-opsi ini segera:
- sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl
Berikut ini adalah opsi yang Anda harus pilih saat diminta untuk mengonfigurasi instalasi Anda dengan benar:
apache2
<$>[warning]
Peringatan: Ketika prompt muncul, “apache2” disorot, tetapi tidak dipilih. Jika Anda tidak menekan bilah SPACE
untuk memilih Apache, penginstal tidak akan memindahkan berkas yang diperlukan selama instalasi. Tekan SPACE
, TAB
, lalu ENTER
untuk memilih Apache.
<$>Yes
saat Anda ditanya apakah ingin menggunakan dbconfig-common
untuk menyiapkan basis dataCatatan: Dengan asumsi Anda telah menginstal MySQL dengan mengikuti Langkah 2 dari tutorial prasyarat tumpukan LAMP, Anda mungkin telah memutuskan untuk mengaktifkan plugin Validate Password. Saat penulisan dokumen ini, mengaktifkan komponen ini akan memicu kesalahan saat Anda mencoba mengatur kata sandi untuk pengguna phpmyadmin:
Untuk menyelesaikan ini, pilih opsi abort untuk menghentikan proses instalasi. Lalu, buka prompt MySQL Anda:
- sudo mysql
Atau, jika Anda mengaktifkan autentikasi kata sandi untuk pengguna MSQL root, jalankan perintah ini lalu masukkan kata sandi Anda saat diminta:
- mysql -u root -p
Dari prompt, jalankan perintah berikut untuk menonaktifkan komponen Validate Password. Perhatikan bahwa ini tidak benar-benar akan menghapus instalasinya, tetapi hanya menghentikan komponen dimuat pada server MySQL Anda:
- UNINSTALL COMPONENT "file://component_validate_password";
Setelah itu, Anda dapat menutup klien MySQL:
- exit
Lalu, coba instal paket phpmyadmin
lagi dan proses akan bekerja seperti yang diharapkan:
- sudo apt install phpmyadmin
Setelah phpMyAdmin terinstal, Anda dapat membuka prompt MySQL sekali lagi dengan sudo mysql
atau mysql -u root -u -p
lalu jalankan perintah berikut untuk mengaktifkan kembali komponen Validate Password:
- INSTALL COMPONENT "file://component_validate_password";
Proses instalasi ini menambahkan berkas konfigurasi phpMyAdmin Apache ke dalam direktori /etc/apache2/conf-enabled/
, di mana berkas konfigurasi tersebut terbaca secara otomatis. Untuk menyelesaikan konfigurasi Apache dan PHP untuk bekerja dengan phpMyAdmin, tugas yang tersisa dalam bagian tutorial ini adalah untuk secara eksplisit mengaktifkan ekstensi PHP mbstring
, yang dapat Anda lakukan dengan mengetik:
- sudo phpenmod mbstring
Setelah itu, mulai ulang Apache supaya perubahan Anda dapat dikenali:
- sudo systemctl restart apache2
phpMyAdmin sekarang sudah terinstal dan dikonfigurasi untuk bekerja dengan Apache. Namun, sebelum Anda dapat log masuk dan mulai berinteraksi dengan basis data MySQL Anda, Anda perlu memastikan bahwa pengguna MySQL Anda memiliki privilese yang dibutuhkan untuk berinteraksi dengan program ini.
Saat Anda menginstal phpMyAdmin ke server Anda, proses ini secara otomatis menciptakan pengguna basis data yang disebut phpmyadmin, yang menjalankan proses mendasar tertentu untuk program. Alih-alih log masuk sebagai pengguna dengan kata sandi administratif yang Anda atur selama instalasi, Anda disarankan untuk log masuk sebagai pengguna MYSQL root atau sebagai pengguna yang dikhususkan untuk mengelola basis data melalui antarmuka phpMyAdmin.
Dalam sistem Ubuntu yang menjalankan MySQL 5.7 (dan versi lebih baru), pengguna MySQL root ditetapkan untuk melakukan autentikasi dengan menggunakan plugin auth_socket
secara asali alih-alih dengan kata sandi. Ini mengizinkan keamanan dan kebergunaan yang lebih besar dalam banyak kasus, tetapi juga dapat memperumit keadaan saat Anda perlu untuk mengizinkan program eksternal — seperti phpMyAdmin — untuk mengakses pengguna.
Untuk log masuk ke phpMyAdmin sebagai pengguna MySQL root, Anda perlu mengganti metode autentikasi dari auth_socket
menjadi salah satu metode yang memanfaatkan kata sandi, jika Anda belum melakukan itu. Untuk melakukan ini, buka prompt MySQL dari terminal Anda:
- sudo mysql
Selanjutnya, periksa metode autentikasi mana yang masing-masing akun pengguna MySQL Anda gunakan dengan perintah berikut:
- SELECT user,authentication_string,plugin,host FROM mysql.user;
Output+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | caching_sha2_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | caching_sha2_password | localhost |
| debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | caching_sha2_password | localhost |
| phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | caching_sha2_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)
Pada contoh ini, Anda dapat melihat bahwa pengguna root memang mengautentikasi dengan menggunakan plugin auth_socket
. Untuk mengonfigurasi akun root agar mengautentikasi dengan kata sandi, jalankan perintah ALTER USER
berikut. Pastikan untuk mengubah password
menjadi kata sandi yang kuat pilihan Anda:
- ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
Catatan: Pernyataan ALTER USER
sebelumnya telah menetapkan pengguna MYSQL root untuk mengautentikasi dengan plugin caching_sha2_password
. Sesuai dokumentasi MySQL resmi, caching_sha2_password
adalah plugin autentikasi MySQL yang lebih disukai, karena plugin ini menyediakan enkripsi kata sandi yang lebih aman daripada mysql_native_password
yang lebih tua tetapi masih digunakan secara luas.
Namun, beberapa versi PHP tidak berfungsi secara andal dengan caching_sha2_password
. PHP telah melaporkan bahwa isu ini sudah diperbaiki pada PHP 7.4, tetapi jika Anda menjumpai kesalahan saat mencoba log masuk ke phpMyAdmin nantinya, Anda mungkin ingin mengatur root untuk mengautentikasi dengan mysql_native_password
sebagai gantinya:
- ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Lalu, periksa lagi metode autentikasi yang digunakan oleh setiap pengguna Anda untuk mengonfirmasi bahwa root tidak lagi mengautentikasi dengan menggunakan plugin auth_socket
:
- SELECT user,authentication_string,plugin,host FROM mysql.user;
Output+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | caching_sha2_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | caching_sha2_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | caching_sha2_password | localhost |
| debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | caching_sha2_password | localhost |
| phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | caching_sha2_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)
Anda dapat melihat dari keluaran ini bahwa pengguna root akan mengautentikasi dengan menggunakan kata sandi. Anda kini dapat log masuk ke antarmuka phpMyAdmin sebagai pengguna root Anda dengan kata sandi yang Anda sudah atur untuk itu di sini.
Selain itu, sebagian orang mungkin menganggap bahwa terhubung ke phpMyAdmin dengan pengguna khusus terasa lebih cocok dengan alur kerja mereka. Untuk melakukan ini, buka shell MySQL sekali lagi:
- sudo mysql
Jika Anda memiliki autentikasi kata sandi yang diaktifkan untuk pengguna root Anda, seperti yang dijelaskan di bagian sebelumnya, Anda perlu menjalankan perintah berikut dan memasukkan kata sandi Anda saat diminta agar terhubung:
- mysql -u root -p
Dari sana, ciptakan pengguna baru dan beri kata sandi yang kuat:
- CREATE USER 'sammy'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
Catatan: Sekali lagi, tergantung versi PHP yang telah Anda instal, Anda mungkin ingin mengatur pengguna baru Anda untuk mengautentikasi dengan mysql_native_password
alih-alih caching_sha2_password
:
- ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Lalu, beri privilese yang sesuai kepada pengguna baru Anda. Sebagai contoh, Anda dapat memberikan privilese kepada pengguna untuk semua tabel di dalam basis data, serta kekuasaan untuk menambah, mengubah, dan menghapus privilese pengguna, dengan perintah ini:
- GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
Setelah itu, keluarlah dari shell MySQL:
- exit
Anda kini dapat mengakses antarmuka web dengan mengunjungi nama domain atau alamat IP publik server Anda yang diikuti dengan /phpmyadmin
:
https://your_domain_or_IP/phpmyadmin
Lakukan log masuk ke antarmuka, baik sebagai root atau dengan nama pengguna dan kata sandi baru yang baru saja Anda konfigurasikan.
Saat Anda log masuk, Anda akan melihat antarmuka pengguna, yang akan terlihat seperti ini:
Karena Anda sekarang dapat terhubung dan berinteraksi dengan phpMyAdmin, yang tersisa hanyalah memperkuat keamanan sistem Anda untuk melindunginya dari penyerang.
Karena sangat umum digunakan di mana-mana, phpMyAdmin adalah target populer bagi penyerang, dan Anda harus lebih berhati-hati untuk mencegah akses yang tidak sah. Salah satu cara melakukan ini adalah dengan menempatkan gateway di depan seluruh aplikasi dengan menggunakan fungsionalitas autentikasi dan otorisasi .htaccess
bawaan dari Apache.
Untuk melakukan ini, Anda harus terlebih dahulu mengaktifkan penggunaan dari penimpaan berkas .htaccess
dengan mengedit berkas konfigurasi Apache dari instalasi phpMyAdmin Anda.
Gunakan editor teks khusus yang Anda sukai untuk mengedit berkas phpmyadmin.conf
yang telah ditempatkan di dalam direktori konfigurasi Apache Anda. Di sini, kita akan menggunakan nano
:
- sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Tambahkan arahan AllowOverride All
di dalam bagian <Directory /usr/share/phpmyadmin>
dari berkas konfigurasi, seperti ini:
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
. . .
Saat Anda telah menambahkan baris ini, simpan dan tutup berkas. Jika Anda menggunakan nano
untuk mengedit berkas, lakukan itu dengan menekan CTRL + X
, Y
, lalu ENTER
.
Untuk menerapkan perubahan yang Anda buat, mulai ulang Apache:
- sudo systemctl restart apache2
Karena sekarang Anda telah mengaktifkan penggunaan berkas .htaccess
untuk aplikasi Anda, Anda perlu menciptakan satu berkas untuk benar-benar menerapkan keamanan.
Agar ini berhasil, berkas tersebut harus diciptakan di dalam direktori aplikasi. Anda dapat menciptakan berkas yang diperlukan dan membukanya di dalam editor teks Anda dengan privilese root dengan mengetik:
- sudo nano /usr/share/phpmyadmin/.htaccess
Dalam berkas ini, masukkan informasi berikut ini:
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user
Berikut ini adalah makna dari masing-masing baris ini:
AuthType Basic
: Baris ini menentukan tipe autentikasi yang Anda sedang terapkan. Jenis ini akan menerapkan autentikasi kata sandi dengan menggunakan berkas kata sandi.AuthName
: Ini menetapkan pesan untuk kotak dialog autentikasi. Anda harus menjaga ini tetap generik sehingga pengguna yang tidak sah tidak akan mendapatkan informasi tentang apa yang dilindungi.AuthUserFile
: Ini menetapkan lokasi berkas kata sandi yang akan digunakan untuk autentikasi. Ini harus berada di luar direktori yang sedang dilayani. Kita akan segera membuat berkas ini.Require valid-user
: Ini menentukan bahwa hanya pengguna terautentikasi yang diberi akses ke sumber daya ini. Inilah yang sebenarnya menghentikan masuknya pengguna yang tidak sah.Setelah Anda selesai, simpan dan tutup berkas.
Lokasi yang Anda sudah pilih untuk berkas kata sandi Anda adalah /etc/phpmyadmin/.htpasswd
. Anda kini dapat menciptakan berkas ini dan memberikannya kepada pengguna awal dengan utilitas htpasswd
:
- sudo htpasswd -c /etc/phpmyadmin/.htpasswd username
Anda akan diminta untuk memilih dan mengonfirmasi kata sandi untuk pengguna yang Anda buat. Setelah itu, berkas dibuat dengan kata sandi yang telah melalui proses hash yang Anda masukkan.
Jika Anda ingin memasukkan pengguna tambahan, Anda perlu melakukannya tanpa bendera -c
, seperti ini:
- sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser
Sekarang, saat Anda mengakses subdirektori phpMyAdmin Anda, Anda akan diminta nama akun dan kata sandi tambahan yang Anda baru saja konfigurasikan:
https://domain_name_or_IP/phpmyadmin
Setelah memasukkan autentikasi Apache, Anda akan dibawa ke laman autentikasi phpMyAdmin reguler untuk memasukkan kredensial MySQL Anda. Dengan menambahkan set kredensial non-MySQL ekstra, Anda memberikan basis data Anda suatu lapisan keamanan tambahan. Ini adalah sesuatu yang baik karena sejak dulu phpMyAdmin rentan terhadap ancaman keamanan.
Anda seharusnya kini telah memiliki phpMyAdmin yang terkonfigurasi dan siap digunakan pada server Ubuntu 20.04 Anda. Menggunakan antarmuka ini, Anda dapat menciptakan basis data, pengguna, dan tabel, serta melakukan operasi biasa seperti menghapus serta memodifikasi struktur dan data.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.