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

标签 php mysql laravel pdo

我在新安装的 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

这里真正奇怪的是,PDO 在 php 中启用,并且我们使用 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

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

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

最佳答案

我在 Laravel/Lumen 5.5/CentOS7/php71/mariaDB 上遇到了类似的问题

使用此处解决方案中概述的“setenforce to test”策略,Permissions Issue with Laravel on CentOS您可能想测试 SElinux 的影响。

我通过端口 3306 进行连接,并能够根据此问题报告 ( https://bugzilla.redhat.com/show_bug.cgi?id=1245295 ) 的见解进行解决

sudo setsebool httpd_can_network_connect_db 1

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

sudo setebool -P httpd_can_network_connect_db 1

关于php - SQLSTATE[HY000] [2002] 权限被拒绝 Laravel PDO 驱动程序(通过 artisan migrate 工作的凭据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54565062/

相关文章:

当 item = 4 时,PHP 拆分列

php - 从数组中删除重复的 strlen 项?

events - 如何在 laravel 中使用 Event::queue?

php - 在 Laravel 5.1 中获取过滤和关联的记录

php - Laravel try/catch 不工作

php - 在不同的命名空间 php 中调用一个函数

php - mysqli_query()至少需要2个参数,给定1个

mysql - VB.net - 您的 SQL 语法有错误;

php - MYSQL 缺少第一行数据

php - 数据未存储在数据库中