Я только начал пробовать Go и хочу повторно реализовать сервер API, написанный в node с ним.
Я столкнулся с препятствием с библиотекой MySQL, которое, похоже, не могу решить. Я пытаюсь открыть соединение с экземпляром AWS RDS и получаю строку подключения:
db, err := sql.Open("mysql", "username:[email protected]:3306/db_name")
При этом я получаю эту ошибку:
default addr for network 'dbinstance.eu-west-1.rds.amazonaws.com:3306' unknown
Я попытался обернуть uri в tcp(dbinstance.eu-west-1.rds.amazonaws.com:3306)
внутри строки, а затем получил:
Error 1045: Access denied for user 'mysql'@'****.2-4.cable.virginm.net' (using password: YES)
( * * - это некоторая часть сетевого адреса, которую я здесь не указываю)
В основном это мой провайдер кабельного телевидения - похоже, он останавливается на первом же пути.
Если я изменю его на tcp(ipaddress)
кажется, что он подключается.
Версия моего приложения node отлично работает со строковым соединением
* Версия драйвера (или git SHA): Версия 1.2
* Версия Go: версия go1.6 windows / amd64
* Версия сервера: MySQL 5.6.23
* Серверная ОС: Amazon RDS
db, err := sql.Open("mysql", "username:password@tcp(dbinstance.eu-west-1.rds.amazonaws.com:3306)/db_name")
должно быть правильным.
Error 1045: Access denied for user 'mysql'@'****.2-4.cable.virginm.net' (using password: YES)
- это ответ сервера MySQL. Похоже, у вас неправильное имя пользователя или пароль или сервер не принимает соединения с вашего IP. Работает ли он с теми же учетными данными и от одного и того же клиента с другими библиотеками, такими как библиотека для узла или официальная c lib?
Неважно, вы уже писали, что работает, если вместо домена использовать IP-адрес.
DSN также хорошо разбирается: User:username Passwd:password Net:tcp Addr:dbinstance.eu-west-1.rds.amazonaws.com:3306 DBName:db_name
.
Думаю, ошибка должна быть на стороне сервера. Драйвер вроде нормально подключается.
Если проблема не исчезла, ответьте
Я не уверен, что это подходящее место, но для меня это все еще проблема. Я попытался подключиться как по URL-адресу, так и по IP-адресу с тем же результатом.
Ошибка 1045: доступ запрещен для пользователя
Проблема не в драйвере, и конфигурация вашего URL_STRING правильная (с протоколом TCP).
Пример правильной конфигурации:
db, err := sql.Open("mysql", "username:password@tcp(dbinstance.eu-west-1.rds.amazonaws.com:3306)/db_name")
Возможно, ваша проблема в конфигурации вашей базы данных (mysql / mariadb). Ссылка в приложении на ссылку на эту проблему: MYSQL ERROR 1045
У меня возникла такая же проблема при подключении к RDS. добавление tcp () в протокол сработало. Спасибо
просто нужно добавить тип сети, что означает user: pass @ net (url) / db
Самый полезный комментарий
db, err := sql.Open("mysql", "username:password@tcp(dbinstance.eu-west-1.rds.amazonaws.com:3306)/db_name")
должно быть правильным.Error 1045: Access denied for user 'mysql'@'****.2-4.cable.virginm.net' (using password: YES)
- это ответ сервера MySQL. Похоже, у вас неправильное имя пользователя или пароль или сервер не принимает соединения с вашего IP. Работает ли он с теми же учетными данными и от одного и того же клиента с другими библиотеками, такими как библиотека для узла или официальная c lib?