0

私が実行すると:

bundle exec rails c

私は得る

Mysql2::Error: Access denied for user 'root'@'$HOST' (using password: YES)

これがうまく機能するという事実にもかかわらず:

mysql -h $HOST -P $PORT -u root -p

これは私の config/database.yml です

development:
  &defaults
  adapter: mysql2
  encoding: utf8mb4
  collation: utf8mb4_unicode_ci
  pool: 5
  host: $HOST
  port: $PORT
  database: $DATABASE
  username: root
  password: $PASSWORD
  reconnect: true

私は何を間違っていますか?

4

2 に答える 2

1

そのような中でbash変数を使用することはできませんconfig/database.yml。Rails は$HOSTstring として扱います"$HOST"。これがここで起こっていることです。

Mysql2::エラー: ユーザー 'root'@'$HOST' のアクセスが拒否されました (パスワードを使用: YES)

代わりに、使用できますENV

development:
  &defaults
  adapter: mysql2
  encoding: utf8mb4
  collation: utf8mb4_unicode_ci
  pool: 5
  host: ENV['HOST']
  port: ENV['PORT']
  database: ENV['DATABASE']
  username: root
  password: ENV['PASSWORD']
  reconnect: true

関連: http://railsapps.github.io/rails-environment-variables.html

于 2013-06-10T12:03:07.617 に答える
0

Rails アプリはローカルホストにありますか?

あなたのコマンドラインは次のように翻訳されると思います

mysql -h $HOST -P $PORT -u root@your-computer -p

MySQL のアクセス許可は接続元のホストに基づいているため、Rails をリモート ホストで実行しているが、localhost でコマンド ライン テストを実行している場合、毎回異なる要求を行っていることになります。たとえば、特権root@localhostを持つべきですが、持つべきではありません。あなたの許可は接続のみを許可し、.DROProot@$REMOTE_HOSTroot@your-computerroot@$HOST

この場合は、権限を変更して root@$HOST へのアクセスを追加します。GRANT

于 2013-06-10T12:03:17.680 に答える