M
Mr Sugiarto
Developer
21 Aug 2026 3 min read

Sebelum bisa menyimpan data Post secara permanen, kita perlu menyambungkan project ke database. Di part ini kita akan pakai GORM, ORM paling populer di ekosistem Go, dengan database MySQL.

Install Dependency

go get gorm.io/gorm gorm.io/driver/mysql github.com/joho/godotenv
  • gorm.io/gorm — ORM utamanya.
  • gorm.io/driver/mysql — driver MySQL untuk GORM.
  • github.com/joho/godotenv — untuk membaca file .env, mirip dotenv di Node.js.

Konfigurasi Environment Variable

Buat file .env.example di root project sebagai referensi:

DB_HOST=127.0.0.1
DB_PORT=3306
DB_USERNAME=root
DB_PASSWORD=
DB_DATABASE=blogfiber_dasar

Copy jadi .env dan sesuaikan dengan kredensial MySQL di komputer masing-masing:

cp .env.example .env

Jangan lupa buat databasenya lebih dulu:

CREATE DATABASE blogfiber_dasar CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Tambahkan juga .env ke .gitignore supaya kredensial database tidak ikut ter-commit.

Membuat Koneksi Database

Buat file database/database.go:

package database

import (
	"fmt"
	"log"
	"os"

	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

var DB *gorm.DB

func Connect() *gorm.DB {
	dsn := fmt.Sprintf(
		"%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
		os.Getenv("DB_USERNAME"),
		os.Getenv("DB_PASSWORD"),
		os.Getenv("DB_HOST"),
		os.Getenv("DB_PORT"),
		os.Getenv("DB_DATABASE"),
	)

	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		log.Fatalf("gagal konek ke database: %v", err)
	}

	DB = db

	return db
}

Penjelasan singkat:

  • DSN (Data Source Name) dibentuk dari environment variable yang sudah kita siapkan.
  • parseTime=True supaya kolom bertipe DATETIME/TIMESTAMP otomatis ter-parse ke time.Time di Go.
  • Variable DB disimpan sebagai package-level variable supaya bisa diakses dari package lain (handler, seeder, dll) tanpa perlu dioper manual terus-menerus.

Memanggil Koneksi di main.go

package main

import (
	"log"

	"github.com/gofiber/fiber/v2"
	"github.com/joho/godotenv"

	"blogfiber/database"
	"blogfiber/routes"
)

func main() {
	if err := godotenv.Load(); err != nil {
		log.Println("tidak menemukan file .env, lanjut pakai environment variable yang ada")
	}

	database.Connect()

	app := fiber.New()

	app.Get("/", func(c *fiber.Ctx) error {
		return c.JSON(fiber.Map{
			"message": "Hello from GoFiber!",
		})
	})

	routes.Setup(app)

	log.Fatal(app.Listen(":3000"))
}

godotenv.Load() membaca file .env di root project dan memasukkan isinya ke environment variable proses. Kalau file .env tidak ditemukan (misalnya di production yang env variable-nya di-set langsung di server), kita cukup log peringatan saja, bukan menghentikan aplikasi.

Testing Koneksi

Jalankan servernya:

go run main.go

Kalau kredensial dan database sudah benar, server akan jalan normal tanpa error. Kalau salah (misalnya database belum dibuat, atau password salah), log.Fatalf di Connect() akan menghentikan aplikasi dengan pesan error yang jelas.

Database sudah tersambung, tapi kita belum punya tabel apapun. Di part berikutnya kita akan buat model Post, migration, dan seeder.

M
Mr Sugiarto

Developer

Bagian dari Series: GoFiber Dasar - Belajar Fundamental Lewat REST API Blog

Belajar konsep-konsep dasar GoFiber (routing, handler, GORM, MySQL, JWT auth) dengan membangun REST API blog sederhana dari nol - lengkap dengan auten...

Lihat Series Lengkap