# Panduan Instalasi Database
## Sistem Informasi Manajemen SDM Puskesmas Muara Kumpeh

## Persyaratan

1. **XAMPP** (sudah terinstall berdasarkan workspace path)
   - MySQL/MariaDB
   - phpMyAdmin (opsional, untuk GUI)

2. **PHP** (jika akan menggunakan aplikasi PHP)
   - Versi 7.4 atau lebih tinggi
   - Extension: PDO, mysqli, mbstring

## Langkah Instalasi

### Metode 1: Menggunakan Command Line (MySQL CLI)

1. **Buka Command Prompt atau Terminal**
   ```bash
   cd C:\xampp\htdocs\sdm_manajemen_puskes\database
   ```

2. **Import Database Schema**
   ```bash
   mysql -u root -p < schema.sql
   ```
   - Masukkan password MySQL (default XAMPP biasanya kosong, tekan Enter)
   - Jika ada error, coba tanpa `-p`:
     ```bash
     mysql -u root < schema.sql
     ```

3. **Import Seed Data (Opsional - untuk testing)**
   ```bash
   mysql -u root -p sdm_puskesmas_muara_kumpeh < seed_data.sql
   ```

### Metode 2: Menggunakan phpMyAdmin

1. **Buka phpMyAdmin**
   - Buka browser
   - Akses: `http://localhost/phpmyadmin`
   - Login dengan username: `root` (password biasanya kosong)

2. **Import Database Schema**
   - Klik tab **"Import"** di menu atas
   - Klik **"Choose File"** atau **"Pilih File"**
   - Pilih file: `C:\xampp\htdocs\sdm_manajemen_puskes\database\schema.sql`
   - Klik **"Go"** atau **"Kirim"**
   - Tunggu hingga proses selesai

3. **Import Seed Data (Opsional)**
   - Pilih database: `sdm_puskesmas_muara_kumpeh` di sidebar kiri
   - Klik tab **"Import"**
   - Pilih file: `seed_data.sql`
   - Klik **"Go"**

### Metode 3: Menggunakan MySQL Workbench

1. **Buka MySQL Workbench**
2. **Connect ke MySQL Server** (localhost, port 3306)
3. **File > Run SQL Script**
4. **Pilih file `schema.sql`**
5. **Klik "Run"**
6. **Ulangi untuk `seed_data.sql`** (jika diperlukan)

## Verifikasi Instalasi

### Cek Database
```sql
SHOW DATABASES LIKE 'sdm_puskesmas_muara_kumpeh';
```

### Cek Tabel
```sql
USE sdm_puskesmas_muara_kumpeh;
SHOW TABLES;
```

Harus menampilkan:
- users
- user_profiles
- pegawai
- absensi
- cuti
- penilaian_kinerja
- sessions
- audit_logs
- permissions
- role_permissions
- password_reset_tokens
- notifications

### Cek Data (jika import seed data)
```sql
SELECT COUNT(*) FROM users;
SELECT COUNT(*) FROM pegawai;
```

### Test Login Default
- **Username**: `admin`
- **Password**: `admin123`

⚠️ **PENTING**: Ganti password default setelah instalasi!

## Troubleshooting

### Error: "Access denied for user 'root'"
**Solusi**: 
- Pastikan MySQL service berjalan di XAMPP Control Panel
- Coba dengan password kosong: `mysql -u root`
- Atau reset password MySQL

### Error: "Unknown database"
**Solusi**: 
- Pastikan file `schema.sql` di-import dengan benar
- Cek apakah database sudah dibuat

### Error: "Table already exists"
**Solusi**: 
- Hapus database terlebih dahulu:
  ```sql
  DROP DATABASE IF EXISTS sdm_puskesmas_muara_kumpeh;
  ```
- Lalu import ulang `schema.sql`

### Error: "Foreign key constraint fails"
**Solusi**: 
- Pastikan import dilakukan dalam urutan yang benar
- Import `schema.sql` terlebih dahulu sebelum `seed_data.sql`

## Konfigurasi Aplikasi

1. **Copy file config**
   ```bash
   copy database\config.example.php database\config.php
   ```

2. **Edit `database/config.php`**
   - Sesuaikan username dan password database
   - Sesuaikan host dan port jika berbeda

## Backup Database

### Backup menggunakan Command Line
```bash
mysqldump -u root -p sdm_puskesmas_muara_kumpeh > backup_$(date +%Y%m%d).sql
```

### Backup menggunakan phpMyAdmin
1. Pilih database `sdm_puskesmas_muara_kumpeh`
2. Klik tab **"Export"**
3. Pilih metode: **"Quick"** atau **"Custom"**
4. Klik **"Go"**

## Restore Database

### Restore menggunakan Command Line
```bash
mysql -u root -p sdm_puskesmas_muara_kumpeh < backup_20240101.sql
```

### Restore menggunakan phpMyAdmin
1. Pilih database (atau buat baru)
2. Klik tab **"Import"**
3. Pilih file backup
4. Klik **"Go"**

## Maintenance

### Cleanup Expired Sessions
Jalankan secara berkala (misalnya via cron job atau scheduled task):
```sql
CALL sp_cleanup_expired_sessions();
```

### View Recent Audit Logs
```sql
SELECT * FROM v_user_activities 
ORDER BY created_at DESC 
LIMIT 50;
```

### Check Active Sessions
```sql
SELECT u.username, s.ip_address, s.last_activity, s.expires_at
FROM sessions s
JOIN users u ON s.user_id = u.id
WHERE s.is_active = 1 AND s.expires_at > NOW();
```

## Support

Jika mengalami masalah:
1. Cek log error MySQL
2. Pastikan semua persyaratan terpenuhi
3. Cek dokumentasi di `README.md` dan `SECURITY_FEATURES.md`

