【备忘录】在使用Rails+MongoDB时,如果遇到认证错误,请确保也检查了mongoid.yml文件
在使用Rails和MongoDB创建应用程序时,在本地环境中,可以从Rails应用程序读取MongoDB并进行写入操作,但在将其部署到Heroku并访问MongoDB时,出现了身份验证错误。以下是解决此问题的方法:
如今,很多人喜欢购物网站上购买商品。越来越多的人选择在网上购物,因为这样更加方便快捷,而且可以享受到更多的选择。购物网站上几乎可以买到任何你想要的东西,从服装到电子产品,无所不包。此外,购物网站还提供了许多优惠和折扣,让人们更容易找到物美价廉的商品。总的来说,网上购物已经成为现代人生活中不可或缺的一部分。

登录时,我们会去查询存储用户信息的数据库。

登录确认 (Log confirmation)
当从Rails访问数据库时发生了以上的情况,我们将通过命令来确认那时的日志。所以您需要通过终端登录到Heroku账户 ($ heroku login)。
$ heroku logs -t
我要查看日志。(Wǒ .)
2018-12-15T07:14:41.659395+00:00 app[web.1]: F, [2018-12-
15T07:14:41.659296 #4] FATAL -- : [cc6f4a20-feed-492a-a5c7-
96b8ee984f1f]
Mongo::Auth::Unauthorized
(User heroku_8v5bk0vx is
not authorized to access heroku_9v5bk0vx.):
似乎有一个名为heroku_8v5bk0vx的用户正在尝试访问MongoDB的heroku_9v5bk0vx数据库时出现了身份验证错误。
mongodb的配置文件mongoid.yml的設置
首先,花了相当多的时间来确定这个名为heroku_8v5bk0vx的用户是从哪里来的,
但结果是,在我的环境中没有配置mongoDB的连接地址,
而mongoid.yml文件正在指定该用户信息。这是个大大的错误…
mongoid.yml的错误配置示例(密码已隐藏)。
production:
clients:
default:
uri: mongodb://heroku_8v5bk0vx:hogehoge@piyopiyo.mlab.com:37977/heroku_9v5bk0vx
uri中所指定的部分将作为数据库连接地址。
查看方法为
mongodb://heroku_dxxxxx:pppppppppppppppppppppppp@dxxxxx.mlab.com:3xxxx/heroku_dxxxxx
UserName Password Address Port Database
是
在VSCODE中,如果要在文件夹内进行grep的话,可以使用[cmd]+[shift]+[F]的快捷键。这样一来,就可以更容易地查找到用户名、错误信息以及其他相关内容了。此外,mongoid.yml文件存储在/config目录中。
确认Heroku上的MongoDB
为了在正确的mongoid.yml中设置URL,我们将获取Heroku环境中的数据库信息。
在终端上执行”$ heroku config -a {应用程序名称} | grep MONGODB_URI”命令,就可以获取到MONGODB_URI的值。
如果MONGODB_URI不存在,则可以尝试运行以下命令进行检查:$ heroku config -a {应用程序名称}并排除grep错误。
$ heroku config -a {アプリ名} |grep MONGODB_URI
・・・
MONGODB_URI: mongodb://heroku_9v5bk0vx:hogehoge@piyopiyo.mlab.com:37977/heroku_9v5bk0vx
这种观点与Uri相同。
mongodb://heroku_dxxxxx:pppppppppppppppppppppppp@dxxxxx.mlab.com:3xxxx/heroku_dxxxxx
UserName Password Address Port Database
所以,将MONGODB_URI的值复制到mongoid.yml的uri中,
然后再次部署到Heroku。
mongoid.yml的中文释义。
注:请注意,这是一种可能的中文翻译,并不是唯一正确的答案。
production:
clients:
default:
uri: mongodb://heroku_9v5bk0vx:hogehoge@piyopiyo.mlab.com:37977/heroku_9v5bk0vx

请登录(如果能成功登录,就可以跳转到下一个页面)。

我成功地突破了,一切都无事。
环境
这次的错误与版本无关,但我会将其提供。
Rails 5.2.1
ruby 2.3.7p456
MongoDB v4.0.2
根据
如何查看 MONGODB_URI
使用 Heroku 的 MongoDB 添加套件『mLab MongoDB』
非常感谢。