2017-06-01 167 views
0

我想讓我的Symfony 3應用程序在Amazon EC2實例上以生產模式運行。Mysql數據庫連接被拒絕

我必須在正確的位置的代碼,然後我嘗試設置與作曲家的任何相關運行

export SYMFONY_ENV=prod 
composer install --no-dev --optimize-autoloader 

,但得到的錯誤

> Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::installAssets 

[Doctrine\DBAL\Exception\ConnectionException] 
An exception occured in driverL SQLSTATE[HY000] [1044] Access denied for user 'my-user'@'127.0.0.1' to database 'my_database' 

此錯誤,然後傳遞下去在腳本終止之前到[Doctrine\DBAL\Driver\PDOException][PDOException]。 這是隨後由消息

[RuntimeException] 
An error occured when executing the "'assets:install --symlink --rela'\''web'\'''" command: 

其然後隨後在相同的錯誤如開頭。

我parameters.yml文件

parameters: 
    database_host: 127.0.0.1 
    database_port: 3306 
    database_name: my_database 
    database_user: my-user 
    database_password: mypassword 
    server_version: 5.6 
    mailer_transport: smtp 
    mailer_host: 127.0.0.1 
    mailer_user: null 
    mailer_password: null 
    secret: Mysecret 
    registration_permitted: true 
    registration_limit: 3 

和用戶my-user有數據庫my_database除了GRANT的所有權限。

我一直試圖解決這個問題幾個小時無濟於事,我遇到的其他解決方案涉及拼寫錯誤的用戶名/密碼/數據庫(三重檢查)或需要服務器版本添加(這沒有任何區別)。

附加信息

  • 運行mysql -u my-user -p提示輸入密碼,然後讓我登錄。
  • 運行mysql -u my-user -p -D my_database會提示輸入密碼,然後返回ERROR 1044 (42000): Access denied for user 'my-user'@'localhost' to database 'my_database'
  • 以root身份登錄到mysql並運行SHOW GRANTS FOR 'my-user';返回ERROR 1141 (42000): There is no such grant defined for user 'my-user' on host '%'
  • 以root身份登錄到mysql並運行SHOW GRANTS FOR 'my-user'@'localhost';返回GRANT USAGE ON *.* TO 'my-user'@'localhost' IDENTIFIED BY PASSWORD hashedPassword

附加信息2 刪除my-user'my-user'@'localhost''my-user'@'127.0.0.1'),然後使用GRANT ALL PRIVILEGES ON my_database.* TO 'my-user'@'localhost' IDENTIFIED BY 'password';並且還GRANT ALL PRIVILEGES ON my_database.* TO 'my-user'@'127.0.0.1' IDENTIFIED BY 'password';然後FLUSH PRIVILEGES;SHOW GRANTS FOR 'my-user'@'localhost'輸出然後

GRANT USAGE ON *.* TO 'my-user'@'localhost' IDENTIFIED BY PASSWORD 'passwordHash' 
GRANT ALL PRIVILEGES ON 'my_database' TO 'my-user'@'localhost' 

'my-user'@'127.0.0.1'類似的輸出重建他們後。

但是,這仍然給我與以前一樣的錯誤,還有什麼想法?

+0

如果你ssh到服務器並運行'mysql的,會發生什麼-u我-user -pmy_database my_d atabase'?你也可以在MySQL中運行'SHOW GRANTS FOR my-user'嗎? – Moein

+0

謝謝@Moein - 我已經將這些命令的輸出添加到問題的末尾(對於評論來說太長),看起來用戶沒有我認爲他們做的權限。你知道這可能是爲什麼嗎?通過phpmyadmin查看錶格顯示了在那裏的權限。 – Kvothe

+1

GRANT USAGE ON基本上沒有任何授權:D 試着運行''將所有權限授予*。*到'我的用戶'@'localhost''然後'FLUSH PRIVILEGES' – Moein

回答

1

正如評論中所述,您對數據庫沒有任何特權。 所以運行此修復您的問題:爲什麼你不得不改變它在你的PARAMS爲localhost

GRANT ALL PRIVILEGES ON my_database.* TO 'my-user'@'localhost' 

關於您的疑問,因爲這是你要的數據庫訪問限制到只有一個特定的IP你告訴mysql的 什麼想象您的網絡中,你可以運行

GRANT ALL PRIVILEGES ON my_database.* TO 'my-user'@'192.168.1.10' 

所以用127.0.0.1替換192.168.1.10,您可以在您的參數使用127.0.0.1