2012-06-21 47 views
2

我正在使用橡膠來部署rails應用程序,並且無法連接到MySQL。我是否必須在EC2上手動設置MySQL,或者Rubber是否已經完成了這項工作? 雖然這是不是所有的幫助,這裏是當耙RAN日誌輸出:MySQL不會在EC2上與橡膠部署連接

** [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 

回答

1

,應用程序名稱,我在rubber.yml輸入實際上是不同的,那麼實際的應用程序名稱(項目文件保留佔位符名)...

我SSH方式登錄的情況下,看着對於current/cat config/database.yml 然後就試圖運行連接命令耙將嘗試從東西上運行,且誤差在那裏,所以我建議不妨更好地調試這是怎麼回事

我猜我不得不改變橡皮mysql.yml配置...我現在重新創建分段的東西,我認爲它至少應該通過這個問題.. gl

0

我不知道舵很多,但看起來它缺少一些配置。沒有用戶指定,也可能沒有密碼。

+0

是啊,我只是不知道在哪裏的配置。據我瞭解,橡膠照顧這一點。在rubber-mysql.yml文件中,有一些可用的配置,但我沒有改變它。我已經將它與默認設置保持一致。 – morcutt

0

我不熟悉的橡膠可言,所以我不知道是否應該創建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; 

您可能需要輸入MySSQL根帳戶的密碼;例如,在Ubunutu上默認是「密碼」。

另請注意,我的示例將完全讀寫權限授予指定用戶的數據庫中的每個表。如果你想使用減少的權限,查找MySQL授權命令。在我的情況

2

如果其他人有這個問題,這是因爲mysql現在默認匿名用戶添加了有限的訪問權限。

該問題被討論here

第一個解決方案不夠全面,你需要最後一個刪除所有匿名用戶(不只是localhost)。這是因爲MYSQL會在用戶之前在主機上進行身份驗證,所以匿名用戶'''your.host.com'將優先於'dbuser'@'your.host.com'(記錄在mysql documentation),並且橡膠將會試圖連接完整的主機名。

編輯您的./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 
+0

非凡,謝謝!這指出匿名用戶「問題」,所以我只是運行mysql_secure_installation來「安全」我的安裝。另外,我在優勝美地上使用MariaDB。 – Joe

相關問題