Mysql: 无法使用连接字符串解析网络地址

创建于 2016-02-27  ·  8评论  ·  资料来源: go-sql-driver/mysql

问题描述

我刚刚开始尝试 Go,我希望用它重新实现一个用 node 编写的 API 服务器。

我在 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)似乎可以连接。

我的应用程序的节点版本在字符串连接下运行良好

配置

*驱动程序版本(或 git SHA):版本 1.2

*Go 版本:go 版本 go1.6 windows/amd64

*服务器版本:MySQL 5.6.23

*服务器操作系统:亚马逊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 库的库)?

所有8条评论

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 库的库)?

没关系,您已经写道,如果您使用 IP 地址而不是域,它会起作用。

DSN 也可以很好地解析: User:username Passwd:password Net:tcp Addr:dbinstance.eu-west-1.rds.amazonaws.com:3306 DBName:db_name
我认为错误必须在服务器端。 驱动程序似乎连接正常。

如果问题仍然存在,请回复

我不确定这是否是正确的地方,但这对我来说仍然是一个问题。 我试图以相同的结果连接 url 和 ip 地址。

错误 1045:拒绝用户“访问”'@'.fios.verizon.net'(使用密码:YES)

驱动不是问题,你的 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

此页面是否有帮助?
0 / 5 - 0 等级