SQLSTATE[HY000] [2002] 权限被拒绝 Laravel PDO 驱动程序(通过 artisan migrate 工作的凭据)

eth*_*320 1 php mysql pdo laravel

我在这个新安装的 PDO 驱动程序上遇到了很多麻烦

这是我在尝试执行由 laravel 触发的任何数据库操作时遇到的错误。

ext Illuminate\Database\QueryException: SQLSTATE[HY000] [2002] Permission denied (SQL: select * from `users` where `email` = ethan@gmail.com limit 1) in /var/www/html/mypath/vendor/laravel/framework/src/Illuminate/Database/Connection.php:647
Run Code Online (Sandbox Code Playgroud)

这里真正奇怪的是,在 php 中启用了 PDO,我们使用的凭据与 php artisan migrate 用于创建表的凭据相同(所以我知道凭据,mysql 套接字都在工作)

这是堆栈中的 PDO 错误

at PDO->__construct('mysql:unix_socket=/mnt/volume_sfo2_01/mysql_data/mysqld.sock;dbname=testdb1', 'dbuser1', 'mypassword', array(0, 2, 0, false, false))
in Connector.php line 68
Run Code Online (Sandbox Code Playgroud)

请注意,我确实移动了 mysql 的数据目录,从而对套接字进行了更改。这个配置可以运行迁移,那么我缺少什么让它与 laravel PDO 驱动程序一起工作?

在 ubuntu 服务器 16 上也是如此。Nginx + php7.1 apparmor 已被额外禁用,仅用于此测试。任何想法将不胜感激。

Car*_*ams 10

我在 Laravel/Lumen 5.5 / CentOS7 / php71 / mariaDB 上有类似的问题

使用此处的解决方案中概述的“setenforce to test”策略,Laravel 在 CentOS 上的权限问题,您可能想要测试 SElinux 的影响。

我通过端口 3306 进行连接,并且能够通过此问题报告(https://bugzilla.redhat.com/show_bug.cgi?id=1245295)的洞察力解决,这导致我

sudo setsebool httpd_can_network_connect_db 1
Run Code Online (Sandbox Code Playgroud)

要使此更改永久化,您需要添加 -P 开关

sudo setsebool -P httpd_can_network_connect_db 1