# Connecting with Go

This guide explains how to establish a connection between a Go application and a MySQL database using the `<span class="s3">go-sql-driver/mysql</span>` package. It walks through the necessary setup, configuration, and execution of a simple SQL query.

## **Variables**

Certain parameters must be provided to establish a successful connection to a MySQL database. Below is a breakdown of each required variable, its purpose, and where to find it. Here’s what each variable represents:

<table border="1" id="bkmrk-variable-description" style="width: 100%; border-collapse: collapse; border-color: rgb(0, 0, 0);"><thead><tr><th style="width: 10.0102%; border-color: rgb(0, 0, 0);">**Variable**

</th><th style="width: 40.4069%; border-color: rgb(0, 0, 0);">**Description**

</th><th style="width: 49.5828%; border-color: rgb(0, 0, 0);">**Purpose**

</th></tr></thead><tbody><tr><td style="width: 10.0102%; border-color: rgb(0, 0, 0);">`USER`

</td><td style="width: 40.4069%; border-color: rgb(0, 0, 0);">MySQL username, from the Elestio service overview page

</td><td style="width: 49.5828%; border-color: rgb(0, 0, 0);">Identifies the database user who has permission to access the MySQL database.

</td></tr><tr><td style="width: 10.0102%; border-color: rgb(0, 0, 0);">`PASSWORD`

</td><td style="width: 40.4069%; border-color: rgb(0, 0, 0);">MySQL password, from the Elestio service overview page

</td><td style="width: 49.5828%; border-color: rgb(0, 0, 0);">The authentication key is required for the specified USER to access the database.

</td></tr><tr><td style="width: 10.0102%; border-color: rgb(0, 0, 0);">`HOST`

</td><td style="width: 40.4069%; border-color: rgb(0, 0, 0);">Hostname for MySQL connection, from the Elestio service overview page

</td><td style="width: 49.5828%; border-color: rgb(0, 0, 0);">The address of the server hosting the MySQL database.

</td></tr><tr><td style="width: 10.0102%; border-color: rgb(0, 0, 0);">`PORT`

</td><td style="width: 40.4069%; border-color: rgb(0, 0, 0);">Port for MySQL connection, from the Elestio service overview page

</td><td style="width: 49.5828%; border-color: rgb(0, 0, 0);">The network port used to connect to MySQL. The default port is 3306.

</td></tr><tr><td style="width: 10.0102%; border-color: rgb(0, 0, 0);">`DATABASE`

</td><td style="width: 40.4069%; border-color: rgb(0, 0, 0);">Database Name for MySQL connection, from the Elestio service overview page

</td><td style="width: 49.5828%; border-color: rgb(0, 0, 0);">The name of the database being accessed. A MySQL instance can contain multiple databases.

</td></tr></tbody></table>

These values can usually be found in the Elestio service overview details, as shown in the image below. Make sure to take a copy of these details and add them to the code moving ahead.

[![image.png](https://docs.elest.io/uploads/images/gallery/2025-04/scaled-1680-/SQYimage.png)](https://docs.elest.io/uploads/images/gallery/2025-04/SQYimage.png)

## **Prerequisites**

- **Install Go**
    - Check if Go is installed by running: `go version`
    - If not installed, download it from [golang.org](https://golang.org/dl/) and install.

- **Install the MySQL Driver**
    - Use the following command to install the <span class="s2">go-sql-driver/mysql</span> driver: `go get -u github.com/go-sql-driver/mysql`

## **Code**

Once all prerequisites are set up, create a new file named `<span class="s2">mysql_connect.go</span>` and add the following code:

```go
package main

import (
	"database/sql"
	"fmt"
	"log"

	_ "github.com/go-sql-driver/mysql"
)

func main() {
	user := "USER"
	password := "PASSWORD"
	host := "HOST"
	port := "PORT"
	database := "DATABASE"

	// Construct DSN (Data Source Name)
	dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s", user, password, host, port, database)

	// Open a connection
	db, err := sql.Open("mysql", dsn)
	if err != nil {
		log.Fatalf("Connection failed: %v", err)
	}
	defer db.Close()

	// Ping to verify connection
	if err := db.Ping(); err != nil {
		log.Fatalf("Ping failed: %v", err)
	}
	fmt.Println("Connected to MySQL")

	// Run a test query to check the MySQL version
	var version string
	err = db.QueryRow("SELECT VERSION()").Scan(&version)
	if err != nil {
		log.Fatalf("Query execution failed: %v", err)
	}
	fmt.Printf("MySQL Version: %s\n", version)
}
```

To execute the script, open the terminal and navigate to the directory where `<span class="s1">mysql_connect.go</span>` is located. Once in the correct directory, run the script with the commands:

```
go mod init example.com/mysqlconnect
go run mysql_connect.go
```

If the connection is successful, the terminal will display output similar to:

```
Connected to MySQL
MySQL Version: 8.0.36
```