2

ruby を使用して rails アプリケーションをデプロイしていますが、MySQL への接続に問題があります。EC2 で MySQL を手動でセットアップする必要がありますか? それとも、Rubber が既にセットアップしている必要がありますか? これだけでは役に立ちませんが、rake を実行したときのログ出力は次のとおりです。

 ** [out :: db01.memepluspl.us] rake aborted!
 ** [out :: db01.memepluspl.us] 
 ** [out :: db01.memepluspl.us] Access denied for user ''@'db01.memepluspl.us' to database 'meme_plus_plus_production'
 ** [out :: db01.memepluspl.us] 
 ** [out :: db01.memepluspl.us] 
 ** [out :: db01.memepluspl.us] Tasks: TOP => db:migrate => environment
4

4 に答える 4

2

他の誰かがこの問題を抱えている場合、それは mysql にデフォルトの匿名ユーザーが追加され、アクセスが制限されているためです。

この問題については、ここで説明します。

そこにある最初のソリューションは十分に包括的ではありません。最後に、すべての匿名ユーザー (localhost だけでなく) を削除するソリューションが必要です。これは、MYSQL が USER の前に HOST で認証するため、匿名ユーザー ''@'your.host.com' が 'dbuser'@'your.host.com' ( mysql のドキュメントに記載) よりも優先され、rubber が完全なホスト名で接続しようとしています。

./config/rubber/deploy-mysql.ymlを編集します。

rubber.sudo_script "create_master_db", <<-ENDSCRIPT
  mysql -u root -e "create database #{env.db_name};"
  mysql -u root -e "delete from mysql.user where user='';"   <<-- ADD THIS LINE
  ...
ENDSCRIPT
于 2012-10-05T06:48:53.530 に答える
1

私の場合、rubber.yml に入力したアプリ名は、実際のアプリ名と実際には異なっていました (プロジェクト ファイルにはプレースホルダー名が保持されます)。

インスタンスに ssh し、探して から接続コマンド rake を実行しようとしましたが、そこにあるものから実行しようとするとエラーが発生したので、何が起こっているのかをよりよくデバッグすることをお勧めしcurrent/ますcat config/database.yml

私は、rubber-mysql.yml 構成を変更する必要があると思いました...今、ステージングのものを再作成しています。少なくともこの問題を通過する必要があると思います.. gl

于 2012-07-03T05:54:01.950 に答える
0

ラダーはよくわかりませんが、設定が足りないようです。ユーザーが指定されておらず、おそらくパスワードも指定されていません。

于 2012-06-21T18:35:03.957 に答える
0

私はRubberにまったく詳しくないので、MySQLアカウントを作成する必要があるかどうかはわかりませんが、手動で行う方法は次のとおりです。

mysql -u root
mysql> grant all on meme_plus_plus_production.* to 'user'@'db01.memepluspl.us' identified by 'password';
mysql> flush privileges;
mysql> exit;

MySQL root アカウントのパスワードを入力する必要がある場合があります。たとえば、Ubunutu ではデフォルトは「password」です。

また、この例では、データベース内のすべてのテーブルに対する完全な読み取りおよび書き込み権限を、指定されたユーザーに付与していることにも注意してください。権限を減らしたい場合は、MySQL grant コマンドを調べてください。

于 2012-06-21T18:47:04.053 に答える