Mysql数据库连接被拒绝

Mysql数据库连接被拒绝

问题描述:

我想让我的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

正如评论中所述,您对数据库没有任何特权。 所以运行此修复您的问题:为什么你不得不改变它在你的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