Laravel

Cara Menghubungkan Laravel ke Database MySQL

06 Jun 2026 Administrator
Header Hero

Cara Menghubungkan Laravel ke Database MySQL

Panduan Integrasi Environment, Konfigurasi Privilese User, dan Eksplorasi Driver PDO MySQL

Menghubungkan aplikasi Laravel ke basis data MySQL merupakan fondasi paling awal yang wajib dipahami saat membangun aplikasi web berbasis data. Laravel mempermudah proses integrasi ini melalui sistem konfigurasi berbasis lingkungan (*environment*) yang sangat rapi dan fleksibel. Di balik layar, Laravel memanfaatkan ekstensi **PDO (PHP Data Objects)** untuk berkomunikasi dengan engine MySQL, menjamin transaksi kueri yang aman, cepat, dan terproteksi dari ancaman celah keamanan konvensional seperti *SQL Injection*.

Melalui panduan terstruktur ini, Anda akan dipandu langkah demi langkah mulai dari penyiapan *database engine*, pengaturan hak akses user secara spesifik (*user privileges*), sinkronisasi berkas konfigurasi .env, hingga penerapan optimasi tingkat lanjut seperti *connection pooling* dan skrip cadangan (*backup automations*). Artikel ini juga dilengkapi dengan tombol salin interaktif untuk mempercepat alur kerja instalasi Anda.

1. Memastikan Layanan MySQL Aktif

Sebelum melakukan konfigurasi di sisi Laravel, pastikan *instance* MySQL server Anda sudah terinstal dan berjalan normal di sistem operasi:

# Periksa versi MySQL Anda
mysql --version

# Cek status layanan (Untuk Pengguna Linux/Ubuntu)
sudo systemctl status mysql

# Perintah menjalankan MySQL jika statusnya nonaktif (Linux)
sudo systemctl start mysql
sudo systemctl enable mysql
Langkah 2

Membuat Database dan Hak Akses User

Demi alasan keamanan, hindari menggunakan user root untuk koneksi aplikasi Laravel. Buatlah database baru beserta user khusus yang memiliki hak akses terbatas hanya untuk database tersebut:

# Masuk ke terminal MySQL sebagai root
mysql -u root -p

# 1. Membuat database baru dengan enkode karakter utf8mb4 (Full Unicode Support)
CREATE DATABASE laravel_app CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

# 2. Membuat user baru lokal khusus aplikasi
CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'PasswordKuatAnda123!';

# 3. Memberikan hak privilese penuh hanya pada database laravel_app
GRANT ALL PRIVILEGES ON laravel_app.* TO 'laravel_user'@'localhost';

# 4. Refresh tabel hak akses dan keluar
FLUSH PRIVILEGES;
EXIT;
Langkah 3

Konfigurasi Berkas Environment (.env)

Salin atau buka berkas konfigurasi lingkungan .env di direktori root Laravel Anda, lalu sesuaikan blok parameter koneksi MySQL berdasarkan kredensial yang telah dibuat pada langkah sebelumnya:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_app
DB_USERNAME=laravel_user
DB_PASSWORD=PasswordKuatAnda123!

2. Menguji Status Koneksi Database

Jangan langsung menjalankan migrasi sebelum menguji validitas koneksi jaringan. Laravel menyediakan CLI Artisan terintegrasi untuk mendiagnosis status database:

# Menampilkan skema info detail database yang sedang aktif terhubung
php artisan db:show

# Pengujian manual via Laravel Tinker REPL
php artisan tinker

# Di dalam shell Tinker, jalankan fungsi pemanggilan PDO berikut:
>>> DB::connection()->getPdo()
# (Jika mengembalikan response "object(PDO)", artinya koneksi sukses total!)
Langkah 5

Mengeksekusi Tabel Skema Migrasi

Setelah koneksi teruji sukses, Anda dapat menyinkronkan seluruh cetak biru skema tabel ke dalam database MySQL menggunakan perintah migrasi:

# Memicu migrasi pembuatan tabel dasar bawaan Laravel
php artisan migrate

3. Konfigurasi Tingkat Lanjut & Skrip Backup Otomatis

A. Persistent Connection (Koneksi Persisten PDO)

Untuk mengoptimalkan performa aplikasi dengan trafik tinggi, aktifkan koneksi persisten di dalam berkas config/database.php agar driver tidak membuang waktu membuka-tutup koneksi berulang kali:

// Cari blok array 'mysql' di config/database.php, tambahkan parameter opsi berikut:
'options' => [
    PDO::ATTR_PERSISTENT => true,
    PDO::ATTR_EMULATE_PREPARES => false,
],

B. Skrip Otomatisasi Pencadangan (Automated Bash Backup)

Gunakan skrip shell bash berikut untuk menjadwalkan pencadangan (*database backup dump*) berkala pada server VPS Anda:

#!/bin/bash
BACKUP_DIR="/var/backups/laravel"
DATE=$(date +%Y%m%d_%H%M%S)
FILE="laravel_app_$DATE.sql"

# Melakukan eksekusi dump database via mysqldump
mysqldump -u laravel_user -pPasswordKuatAnda123! laravel_app > "$BACKUP_DIR/$FILE"

# Kompresi file SQL menjadi format gzip untuk menghemat kapasitas storage disk
gzip "$BACKUP_DIR/$FILE"

# Aturan rotasi otomatis: Hapus file backup lama yang usianya sudah melewati 7 hari
find $BACKUP_DIR -name "*.gz" -mtime +7 -delete
Praktik Terbaik Keamanan Integrasi Database

Penerapan keamanan yang ketat pada lapisan database adalah dinding pertahanan utama aset digital Anda. Selalu patuhi protokol berikut:

  • Terapkan Prinsip Hak Akses Minimum: Berikan privilese *user database* hanya pada skema yang benar-benar dikleau oleh aplikasi. Jangan pernah memberikan akses global seperti GRANT ALL PRIVILEGES ON *.* pada akun sekunder.
  • Gunakan Enkode utf8mb4: Selalu gunakan konfigurasi utf8mb4 untuk mendukung enkode penuh karakter modern seperti penyimpanan karakter emoji, teks multi-bahasa, maupun simbol khusus secara native tanpa memicu malafungsi memori (*malformed data*).
  • Isolasi Berkas Kredensial: Jangan pernah menuliskan kata sandi atau *username* database langsung secara tertanam (*hardcoded*) di dalam file konfigurasi PHP dalam folder config. Selalu panggil nilai variabel tersebut via wrapper fungsi env() yang mengarah ke berkas .env yang telah diabaikan dari pelacakan repositori Git (*gitignored*).
v