Goを試し始めたばかりで、ノードで記述された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
*サーバーOS: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ライブラリなどの他のライブラリで動作しますか?
ドメインの代わりに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ライブラリなどの他のライブラリで動作しますか?