SQLSTATE[HY000] [2002] 权限被拒绝 Laravel PDO 驱动程序(凭证通过工匠迁移工作)

Posted

技术标签:

【中文标题】SQLSTATE[HY000] [2002] 权限被拒绝 Laravel PDO 驱动程序(凭证通过工匠迁移工作)【英文标题】:SQLSTATE[HY000] [2002] Permission denied Laravel PDO Driver (credentials working via artisan migrate) 【发布时间】:2019-07-01 01:57:04 【问题描述】:

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

这里真正奇怪的是,在 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

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

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

【问题讨论】:

你能看到是否“使用 PDO;”还有帮助,您使用的是宅基地还是 Xampp? 确保你的配置没有被缓存。从控制台运行 php artisan config:clear 【参考方案1】:

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

使用此处解决方案中概述的“setenforce 测试”策略,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 setsebool -P httpd_can_network_connect_db 1

【讨论】:

谢谢!这对我来说正在使用 Laravel 5.6 在 CentOS 7 上运行。 当我的 PHP 代码从浏览器访问时尝试通过网络访问 MySQL 数据库时,我得到了相同的错误代码(不使用 Laravel 或任何框架,只是一个普通的 PHP 站点)。从命令行运行 PHP 脚本时,它运行良好。事实证明,罪魁祸首正是这个 SE Linux httpd_can_network_connect_db 变量。将其设置为 1 可以解决所有问题!谢谢:) 谢谢你救了我。

以上是关于SQLSTATE[HY000] [2002] 权限被拒绝 Laravel PDO 驱动程序(凭证通过工匠迁移工作)的主要内容,如果未能解决你的问题,请参考以下文章

SQLSTATE[HY000] [2002] 连接被拒绝 |

Laravel:SQLSTATE [HY000] [2002] 连接被拒绝

Symfony 2 SQLSTATE [HY000] [2002] 连接被拒绝错误

Symfony 5 SQLSTATE [HY000] [2002] 在主机上发送项目后

Laravel 7 SQLSTATE [HY000] [2002] 连接被拒绝

PHP + MYSQL + Laravel - “SQLSTATE [HY000] [2002] 连接被拒绝” [重复]