私のローカルマシンで、database.ymlファイルのすべての機密情報に環境変数を設定します。私のファイルは次のようになります:
default: &default
adapter: mysql2
encoding: utf8
pool: 5
username: <%= ENV['DATABASE_USERNAME'] %>
password: <%= ENV['DATABASE_PASSWORD'] %>
socket: <%= ENV['SOCKET'] %>
development:
<<: *default
database: <%= ENV['DEVELOPMENT_DATABASE'] %>
test:
<<: *default
database: #JetStreamIQ-2_0_test
production:
<<: *default
database: <%= ENV['PRODUCTION_DATABASE'] %>
username: <%= ENV['DATABASE_USERNAME'] %>
password: <%= ENV['DATABASE_PASSWORD'] %>
これらの環境変数を.bashrcファイルに設定するだけでよいと思っていましたが、機能していないようです。私の.bashrcファイルは次のようになります。
export DATABASE_USERNAME="root"
export DATABASE_PASSWORD="*****"
export SOCKET="/var/run/mysqld/mysqld.sock"
export DEVELOPMENT_DATABASE="shoppe_development"
export PRODUCTION_DATABASE="#"
サーバーを実行すると
Rails s
私は言うエラーが出ます:
Access denied for user 'root'@'localhost' (using password: YES)
Database.ymlファイルの構成方法が原因で、データベースのユーザー名とパスワードに問題があることを理解していますが、それが何かはわかりません。
ここで見逃している大きなものはありますか?どんな助けでも大歓迎です。
ありがとう!
ここでいくつかのヒントを提供したいと思います。
Erbを介してdatabase.ymlを実行し、何を取得しているかをテストできます。たとえば、erb config/database.yml
です。これは、問題が何であるかを判断するのに役立ちます。
set
コマンドを使用して、シェルに設定されているすべての環境変数を見つけることができます。これにより、予期している環境変数が設定されていることを確認できます(.bashrc
内)。
これがお役に立てば幸いです。
Bashrcファイルを編集した後、変更を確定するために、そのターミナルセッションを終了して別のターミナルを開く必要があったことがわかります。
端末を再起動したくない場合は、.bashrcファイルを実行するだけです。
source /path/to/.bashrc
Railsサーバーと同じターミナルで.
それはタイプミスですか、それともJETSTREAMIQ_DATABASE_PASSWORD
ですが、次にDATABASE_PASSWORD
あなたのdatabase.yml
?それでそれができるからです。
mysql
コマンドラインアプリを使用して実際の値を直接使用してmysqlに接続できますか?
環境変数を.bashrc
ファイルの先頭に配置する必要がある場合があります。ファイルへのリターンが実行されるためです。したがって、実際にexport
コマンドを実行する前に戻ります
このようなもの:
ナノ〜/ .bashrc
export DATABASE_VAR="my_own_var"
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac