概要・エラーコード
MongoDBを触りはじめました、プログラミング初心者です。
データベースに接続しようと思ったところ、タイトルのエラーが出たので解決方法をメモ。
// 出たエラー(の一部)
MongoAPIError: URI must include hostname, domain name, and tld
原因
自動生成したパスワードの中に@が含まれているのに、
URIで指定する時にエンコードしていなかったことが原因でした。
MongoDBはパスワードの中に記号が含まれていた場合、
パーセントエンコーディングする必要があるそうです。
解決方法
- パスワード部分をパーセントエンコードする
- パスワードを変更する(非推奨)
パスワード部分をパーセントエンコーディングする
当たり前ですが、パーセントエンコーディング以外のエンコードで試したところ、エラーが出ました。
データベースとアプリケーションを接続する際、
MongoDBが用意しているコードを使用すると思います
// 以下、サンプルです
mongodb+srv://username:<password>@cluster0.nwdoyig.mongodb.net/?retryWrites=true&w=majority
このコードの<password>部分を書き換えるときに、
パーセントエンコーディングしたパスワードで書き換えたらOKです!
パスワードを変更する(非推奨)
「パスワードに記号が含まれている場合、パーセントエンコーディングする必要がある」
という情報は問題解決後に出会った情報です💦
パスワードに問題があるのかも?→じゃあパスワードを変更しよう!
という結論に至りデータベースに接続するユーザーのパスワードを変更しました。
今回は練習で触っている&重要な情報がデータベースに入っていない
ということでパスワードを容易に変更しましたが、基本的にはやめましょう🥺
今回メモするのはコマンドではなく、GUIでパスワードを変更する方法です。
変更方法
ブラウザ版のMongoDBにログインし、「Database Access」をクリック→
画面右端にある「EDIT」をクリック
ポップアップが出てくるので、現在のパスワードを入力→
「Edit Password」をクリックすると新しいパスワードを入力できます。
新しいパスワードを入力したら、画面下部にある「Update User」をクリックで完了!
これでパスワードは変更できます。
Compassを使ってMongoDBを操作している場合は、
データベースを一度削除して再度接続しましょう。
それでは!
コメント