Невозможно подключиться к серверу mysql с помощью go и docker - наберите tcp 127.0.0.1:3306: connect: соединение отклонено - PullRequest
0 голосов
/ 25 сентября 2018

На моем Mac установлен Mysql Community Server, он настроен и работает, я могу подключиться к нему по localhost: 3306, используя Navicat для MySQL.Однако всякий раз, когда я пытаюсь подключиться к базе данных из моего приложения go, которое выполняется с помощью docker-compose, я получаю следующую ошибку:

dial tcp 127.0.0.1:3306: connect: connection refused

Это мой код go:

// dbUser, dbPassword, & dbName are all variables that definitely contain the correct values
db, err = sql.Open("mysql", dbUser+":"+dbPassword+"@tcp(localhost:3306)/"+dbName)

if err != nil {
    panic(err.Error())
}

defer db.Close()

query, err := db.Query("INSERT INTO test_table(test_field) VALUES(This is a test)")

if err != nil {
    panic(err.Error())
}

defer query.Close()

и я импортирую:

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

Любая помощь будет очень признательна, спасибо.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Вы должны открыться так:

db, err := sql.Open("mysql", "root:root@tcp(mysql:3306)/GoLife")

mysql - это имя службы, созданной в Docker.

0 голосов
/ 25 сентября 2018

Вы не можете подключиться к localhost из Docker (особенно на Mac, где Docker работает под виртуальной машиной Linux под поверхностью) и ожидать доступа к службам, предоставляемым хост-машиной.

Однако, есть функция для доступа к хост-машине по IP-адресу, используя специальное имя хоста docker.for.mac.localhost.В случае отсутствия каких-либо других проблем с сетью Docker, исправление строки подключения для использования docker.for.mac.localhost:3306 должно решить эту проблему и разрешить доступ к службам на хост-компьютере.

(Более подробные сведения об этом обходном пути доступны в документации Docker..)

...