options(MYSQLI_OPT_CONNECT_TIMEOUT, 5); if (@$conn->real_connect($host, $user, $pass, $db, $port)) { $conn->set_charset('utf8mb4'); return $conn; } return null; } $conn = null; $lastError = ''; for ($i = 1; $i <= 90; $i++) { $conn = connect_mysql($host, 'root', $rootPass, null, $port); if ($conn) { break; } $lastError = mysqli_connect_error(); log_line("Menunggu database siap ($i/90): " . ($lastError ?: 'belum siap')); sleep(2); } if (!$conn) { log_line("Database tidak bisa dihubungi. Host=$host Port=$port Error=$lastError"); exit(1); } log_line('Database siap.'); $safeUser = $conn->real_escape_string($appUser); $safePass = $conn->real_escape_string($appPass); $conn->query("CREATE USER IF NOT EXISTS '{$safeUser}'@'%' IDENTIFIED BY '{$safePass}'"); $conn->query("GRANT ALL PRIVILEGES ON *.* TO '{$safeUser}'@'%'"); $conn->query("FLUSH PRIVILEGES"); function table_exists($conn, $db, $table) { $db = $conn->real_escape_string($db); $table = $conn->real_escape_string($table); $result = $conn->query("SHOW TABLES FROM `{$db}` LIKE '{$table}'"); return $result && $result->num_rows > 0; } function import_sql_file($conn, $path, $label) { if (!is_file($path)) { log_line("Lewati {$label}: file tidak ditemukan {$path}"); return; } $sql = file_get_contents($path); if ($sql === false || trim($sql) === '') { log_line("Lewati {$label}: file kosong"); return; } log_line("Import {$label} dari {$path}"); if (!$conn->multi_query($sql)) { log_line("Import {$label} gagal: " . $conn->error); exit(1); } do { if ($result = $conn->store_result()) { $result->free(); } if ($conn->errno) { log_line("Import {$label} gagal: " . $conn->error); exit(1); } } while ($conn->more_results() && $conn->next_result()); log_line("Import {$label} selesai."); } if (!table_exists($conn, 'spbu_db', 'spbu')) { import_sql_file($conn, '/var/www/html/01/spbu_db.sql', 'spbu_db'); } else { log_line('spbu_db sudah ada.'); } if (!table_exists($conn, 'webgis2', 'jalan')) { import_sql_file($conn, '/var/www/html/02/webgis2.sql', 'webgis2'); } else { log_line('webgis2 sudah ada.'); } if (!table_exists($conn, 'webgis_uas', 'rumah_ibadah')) { import_sql_file($conn, '/var/www/html/05/webgis_uas.sql', 'webgis_uas'); } else { log_line('webgis_uas sudah ada.'); } log_line('Inisialisasi database selesai.');