SQLSTATE[HY000] [2002] 权限被拒绝

我收到此错误不知道原因,这是我正在尝试上传文件的网站。SQLSTATE[HY000] [2002] Permission deniedexample.com


答案 1

发生这种情况是因为 selinux 避免了从 httpd 服务器到远程数据库服务器的数据库连接。要解决此问题,您需要通过ssh访问您的服务器,或者如果您具有预先访问权限,只需打开控制台并执行以下操作:

如果端口 80 是托管的,则必须签入 SELinux。您可以通过键入列表来检查它,然后检查:# semanage port -l | grep http_port_t

http_port_t tcp 443, 488, 8008, 8009, 8443, 9000

如果需要添加所需的端口,只需键入:

# semanage port -a -t http_port_t -p tcp 80

键入命令以再次执行 ckeck:

# semanage port -l | grep http_port_t

.

http_port_t tcp 80, 443, 488, 8008, 8009, 8443, 9000

然后,您应该通知 SELinux 您希望允许从 httpd 服务器到数据库远程服务器的网络连接,并设置设置它的布尔变量:

  1. 关闭 httpd 服务# service httpd stop
  2. # setsebool httpd_can_network_connect 1
  3. # setsebool httpd_can_network_connect_db 1
  4. 提升 httpd 服务# service httpd start

现在,您的 httpd 服务应该能够从数据库服务器获取数据。

重新启动后,这些更改将不会保留。要使它们永久化,请改为执行以下操作:

  1. 关闭 httpd 服务# service httpd stop
  2. # setsebool -P httpd_can_network_connect 1
  3. # setsebool -P httpd_can_network_connect_db 1
  4. 提升 httpd 服务# service httpd start

不同之处在于“-P”标志。

我希望这对搜索解决此类错误的团伙有用。


答案 2

进入 .env 文件并将 DB_HOST=127.0.0.1 更改为 DB_HOST=localhost


推荐