我有一个带有 Laravel 应用程序的 centos EC2。我还在同一个 EC2 实例上安装了 MySQL。它工作正常。
现在我决定将 MYSQL 迁移到 AWS RDS (MySQL Aurora)。我可以通过 Heidi 连接到 AWS RDS 并毫无问题地进行查询。
但是在 Laravel 中它会抛出异常。 我更改了 DB_HOST、DB_DATABASE、DB_USERNAME、DB_PASSWORD 的 .env 文件凭据。
请参阅下面的异常(exception)情况:
1/3 PDOException in PDOConnection.php line 43:
SQLSTATE[HY000] [2002] Permission denied
1. in PDOConnection.php line 43
2. at PDO->__construct('mysql:host=correct_host;port=3306;dbname=correct_db', 'correct_username', 'correct_password', array('0', '2', '0', false, false)) in PDOConnection.php line 43
1/2 PDOException in PDOConnection.php line 47:
SQLSTATE[HY000] [2002] Permission denied
1/3 QueryException in Connection.php line 770:
SQLSTATE[HY000] [2002] Permission denied (SQL: select * from `users` where `users`.`id` = 1 limit 1)
更新
我刚刚将 .env 中的数据库凭证恢复到我的旧 MySQL(安装在与 Laravel 应用程序相同的 EC2 实例上)。 它与 DB_HOST=localhost 配合使用,但如果我使用实际的 ip,DB_HOST=127.0.0.1,它会抛出相同的异常。
最佳答案
如果您在 centos EC2 上运行 SELinux,请尝试关闭 SELinux 并再次测试您的应用程序。如果是 SELinux 导致了这个问题,很可能是因为外部连接到数据库的策略。您应该重新打开 SELinux 并使用此命令启用该策略。
sudo setsebool -P httpd_can_network_connect_db=1
关于mysql - Laravel 权限在远程 Mysql 服务器 (AWS aurora) 上被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42937925/