command insert requires authenticationエラー

今回は、GoでMongodbに接続する際に発生した「command insert requires authentication」エラーの解決方法について整理していこうと思います。

GoでMongoDBを使おう

"gopkg.in/mgo.v2"
  • GoでMongoDBを使うには上記のパッケージを利用します。
$go get gopkg.in/mgo.v2"
  • 上記のコマンドでインストールするのも忘れないでください。

MongoDBの接続セッション生成

  • mgo.Dial(url)を利用してセッションを作成ていましたが、Insert時エラーが発生しました。
  • command insert requires authenticationエラーが発生!!
  • 原因を調べたところ、MongoDBの認証情報をenabled設定しておきましたが、セッション作成時、認証情報をセットしていなかったのが原因でした。

解決

  • 認証情報をセットするには、セッションを作成時に上記のメソッドを利用して作成します。
  • 上記のようにMongoDBの認証情報をセットしてDialWithInfoに渡せば良いです。
  • Database:空白に渡すとデフォルトでtestがセットされます。
  • Sourch:空白に渡すとデフォルトでadminがセットされます。
  • 自分のサイドプロジェクトはtest、adminで良いので空白に渡しました。
  • 上記はDialWithInfo()の一部です。

  • 正常にチャットルームも生成されるし、チャットもできるようになりました!!!(この記事とは関係ないですけど。。)

終わりに

エラーはいつも怖いですね。これで1時間以上ググってました。

GoでMongoDBを使用する詳しい方法はDocを参考してください。

コメントを残す